2015-07-19 143 views
0

我已經搜索了這個問題,並且出乎意料地沒有發現任何關於它的信息。
我正在創建一個父類動態創建的屬性,我試圖訪問他們在一個類的孩子。訪問父類動態創建屬性

這是我的代碼:

class Parent_class { 
    public $var = '123'; 

    function __set($name, $value){ 
     $this->$name = $value; 
    } 
} 

class Child_class extends Parent_class{ 

} 

$parent = new Parent_class(); 
$child = new Child_class(); 

$parent->new_property = 'value'; 

echo $parent->new_property; // returns 'value' 
echo $child->var; // returns '123' 
echo $child->new_property; // returns 'Notice: Undefined property Child_class::$new_property' 

我怎樣才能在父類中訪問動態創建的屬性?

+0

你有兩個不同的對象,它們是完全獨立的! – Rizier123

回答

0

我已經設法通過使用__get魔術方法和靜態數組來獲得解決方法。

class Parent_class { 
    public $var = '123'; 

    private static $_global = array(); 

    function __set($name, $value){ 
     self::$_global[$name] = $value; 
    } 

    function __get($name){ 
     return self::$_global[$name]; 
    } 
} 

class Child_class extends Parent_class{ 
    function echoparent(){ 
     return $this->new_property; 
    } 
} 

$parent = new Parent_class(); 
$child = new Child_class(); 

$parent->new_property = 'value'; 

echo $parent->new_property; // returns 'value' 
echo $child->var; // returns '123' 
echo $child->new_property; // returns 'value' 
echo $child->echoparent(); // returns 'value'