2015-07-19 101 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'