متفاوت بودن خروجی متد خراخوانی شده با متد اصلی
#1
Note 
سلام دوستان
من یه متد رو داخل متد دیگه ای فراخوانی میکنم ولی خروجی متد فراخونی شده با زمانی که متد رو به تنهایی اجرا کنم نتیجه ش یکسان نیست
کد php:
    function NameDB()
    {        
        
$array glob('sql/*.php') ;
        foreach(
$array as $num => $fields)
        {
            
$name basename($fields);
            
$this -> dbName = ((chop($name '.php'))) ;
            
var_dump$this -> dbName).'<BR/>' ;
        }
    } 
خروجی اون اینه
نقل قول: string(6) "subSql" string(7) "subsql1"
کد php:
    function isDB($dbName)
    {
        
$this -> NameDB() ;
        
var_dump($this -> dbName) ;
        
//foreach($array as $name => $value){} method continue 
        
    

خروجی این متد
نقل قول: string(6) "subSql" string(7) "subsql1" string(7) "subsql1"
دوتای اول که خروجی همان متد NameDB() هست ولی برای نتیجه var_dump داخل متد isDB() فقط یکیشو داده . براچی اینجوریه؟

پاسخ
#2
Note 
درسته دیگه!
تو متد ()NameDB دوبار نشون میده چون حلقه foreach دارید و دوبار Var_dump اجرا میشه اما تو متد بعدی فقط یه بار دیگه اخرین مقدار پروپرتی dbName رو یه بار دیگه با var_dump خروجی گرفتید کلا میشه ۳ تا.

پاسخ
#3
Note 
Daniel نوشته است:درسته دیگه!
تو متد ()NameDB دوبار نشون میده چون حلقه foreach دارید و دوبار Var_dump اجرا میشه اما تو متد بعدی فقط یه بار دیگه اخرین مقدار پروپرتی dbName رو یه بار دیگه با var_dump خروجی گرفتید کلا میشه ۳ تا.
نه دیگه درست نیست
اخه subSql و subSql1 دو تا مجزا هستن که متد اولی داره اونا رو بر میگردونه ولی داخل متد ()isDB بنظرم باید علاوه بر نتیجه متد ()NameDB چون دوباره این متغیر $this -> dbName رو var_dump زدم باید هر دو رو بیاره ولی درحالی که اینطوری نیست چرا؟

پاسخ
#4
Note 
خب شما در متد NameDB() در پایان کار یه return بگیری به نظرم این مشکل حل میشه

توتال دیزاین
مرجع تخصصی طراحی وب سایت ، وب اپلیکیشن و سیستم های مدیریت همایش, ویندوز اپلیکیشن
و هر آنچه شما بخواهید...
پاسخ
#5
Note 
mahbobe.prog نوشته است:بنظرم باید علاوه بر نتیجه متد ()NameDB چون دوباره این متغیر $this -> dbName رو var_dump زدم باید هر دو رو بیاره ولی درحالی که اینطوری نیست چرا؟
اشتباه شما همینجاست.
ببینید شما فقط یه رشته دارید تو dbName میریزید subsql یا subsql1 و آخرین رشته ای که تو dbName قرار میگیره subsql1 هست که توسط حلقه foreach انجام میشه. بعد تو متد دوم شما یه بار دیگه اومدی از مقدار پراپرتی dbName که subsql1 باشه خروجی گرفتی.
دوبار تو متد NameDB و یک بار IsDB یعنی var_dump تو متد اول دو بار اجرا میشه و یک بار هم تو متد دوم که کلا میشه سه بار.

پاسخ
#6
Note 
نتیجه اجرای این کد رو به من میگی؟
کد php:
<?php

$a
=null;

function 
dbName(){
    global 
$a;

    
$a 'subsql';
    
var_dump($a);

    
$a 'subsql1';
    
var_dump($a);
}

function 
isDB(){
    global 
$a;
    
dbName();
    
var_dump($a);
}

isDB(); 

PHP code - 21 lines - codepad

پاسخ
#7
Note 
اره حرفتون درست بود ممنونم از پاسخ کاملتون
....................
php.sec
نتیجه میشه subsql1
چون متغیر a رو global تعریف کردین داخل متد میشه محتوای اون رو تغییر داد

پاسخ
#8
Note 
الان میخوام که داخل متد ()isDB نتیجه اجرای متد ()NameDB رو استفاده کنم به چه شکلی باید اینکارو بگنم؟

پاسخ
#9
Note 
mahbobe.prog نوشته است:الان میخوام که داخل متد ()isDB نتیجه اجرای متد ()NameDB رو استفاده کنم به چه شکلی باید اینکارو بگنم؟
سلام
به همون شکلی که استفاده کردید : $this -> NameDB() ;

پاسخ
#10
Note 
بله درسته
ولی من وقتی داخل متد()NameDB بجای var_dump کردن نتیجه اجرا از return استفاده میکنم فقط نتیجه اخر حلقه رو میده چیکار کنم که هر دو رو بده ؟؟

پاسخ
ایجاد موضوع جدید   پاسخ به موضوع  

موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Note چطور با انتخابای متفاوت از فرم کوئری مناسب داشته باشم؟ mahbobe.prog 7 1,243 26-11-2014 ساعت 11:04
آخرین ارسال: mahbobe.prog
Note تفاوت file.inc.php با file.php REza mAX 6 772 16-01-2014 ساعت 13:53
آخرین ارسال: REza mAX
Note تفاوت بین دو زمان در php TroFun 2 550 29-10-2013 ساعت 11:39
آخرین ارسال: Daniel
Note تفاوت this$ با ::self در PHP چیست؟ Php1 1 730 29-09-2013 ساعت 16:01
آخرین ارسال: PHP.sec
Note تفاوت "==" با "===" در PHP SOFTAFZAR 0 398 24-02-2013 ساعت 20:54
آخرین ارسال: SOFTAFZAR
Note تفاوت دستور include با require در PHP SOFTAFZAR 1 925 29-11-2012 ساعت 15:36
آخرین ارسال: Saeed-N

کاربرانِ درحال بازدید از این موضوع:   1 مهمان