我不知道我是否严重误解了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
显示子类的名称。
答案 0 :(得分:3)
唯一的属性($yoo
)是私有的,因此无法从my
访问,其中定义了toArray()。