2017-02-08 40 views
-1

藉此類:公共變量沒有改變類子功能

class A{ 
    public $test = ''; 

    public function B($param){ 
    $this->test = 'hello'; 
    echo $param; 
    } 

    public function C(){ 
    return "C() contains:" . $this->test; 
    } 
} 

如果我把它這樣,通過C的輸出轉換成B:

$obj = new A; 
$obj->B($obj->C()); 

我得到這樣的輸出:

C() contains: 

我想它來打印下面,因爲B已經設置$test爲hello:

C() contains:hello 

爲什麼設置的對象在B()公共$test變量不改變值,孩子函數調用C()得到?他們是不是都訪問相同的$obj->test變量?

+1

請注意''''在*'B'之前被調用*,因此該值被設置在最後。 – Rizier123

+0

*'B'設置值之前,'C'如何將值返回給'B' *? *認知失調加劇* – deceze

+0

我的不好,早上不好。謝謝。 –

回答

1

如果你第一個電話A類返回C() contains:,現在你在方法B通過這爲$param,現在$test具有價值hello,但你只是呼應$param這是C() contains:C方法,因此將只打印C() contains:列印您需要的結果echo $param, $this->test