2016-08-19 30 views
0

代碼:爲什麼我不能在PHP中獲取父變量?

class A { 
    public $arrayToReturn = array(); 
    function __construct() { 
     $arrayToReturn['country'] = 'US'; 
    } 
} 
class B extends A { 
    public function foo() { 
     print_r($arrayToReturn); 
    } 
} 
$b = new B(); 
$b->foo(); 
print_r($b->arrayToReturn); 

結果:

PHP Notice: Undefined variable: arrayToReturn in xxxx.php on line 11 
Array 
(
) 

我不能在B類的功能陣列,並獲得其應具有由$ B-一個元素> arrayToReturn調用一個空數組。爲什麼?

+0

標記爲 「爲什麼這個代碼不工作」。請提供更多細節。 –

+0

然後,當然,也是愚蠢的http://stackoverflow.com/questions/16959576/reference-what-is-variable-scope-which-variables-are-accessible-from-where-and –

回答

3

你必須使用$this->arrayToReturn

class B extends A { 
    public function foo() { 
     print_r($this->arrayToReturn); 
    } 
} 

同在A級:

class A { 
    public $arrayToReturn = array(); 
    function __construct() { 
     $this->arrayToReturn['country'] = 'US'; 
    } 
} 
+0

謝謝,它解決了我的第一個問題。但數組在父構造函數中添加了一個元素,爲什麼我會得到一個空數組? – sxlllslgh

+0

看看重複。 _爲什麼不調用父構造函數?_ – AbraCadaver

+0

@sxlllslgh你也必須在你的類B中創建構造函數,並從它調用'parent :: __ construct();',那麼你就會擁有它;)祝你好運 – pavlovich

相關問題