Php get_object_vars要求子类无法正常工作

时间:2013-10-02 12:22:03

标签: php

我不知道我是否严重误解了OOP的概念,或者我在这里实施错误。可以请有人解释我在这里做错了什么

<?php

class my {
    public function myName(){
        return get_class($this);   
    }
    public function toArray() {
        $retArray=array();
        $class_vars = get_object_vars($this);

        foreach ($class_vars as $name => $value) {
           $retArray[$name]=$value;
        }
        return $retArray;
    }
}
class you extends my {
    private $yoo;
    public function __construct($var1) {
        $this->yoo=$var1;
    }
}
$objectYou = new you("I am pri");
echo '<pre>';
echo $objectYou->myName();
echo '<br>';
print_r($objectYou->toArray());
echo '</pre>';
?> 
  

输出是:

     

     

Array()

我想要的是拥有一个超级my,它有一个函数toArray来将对象转换为数组。现在,扩展此类的所有类都应该继承此函数并可以使用它。但是在objectYou上调用toAray是返回空数组。同时在myName上调用objectYou显示子类的名称。

1 个答案:

答案 0 :(得分:3)

唯一的属性($yoo)是私有的,因此无法从my访问,其中定义了toArray()。