为子类调用的Php get_对象_变量不起作用
我不知道我是否严重误解了OOP的概念,或者我在这里实现错了。有人能解释一下我做错了什么吗为子类调用的Php get_对象_变量不起作用,php,Php,我不知道我是否严重误解了OOP的概念,或者我在这里实现错了。有人能解释一下我做错了什么吗 <?php class my { public function myName(){ return get_class($this); } public function toArray() { $retArray=array(); $class_vars = get_object_vars($this);
<?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>';
?>
输出为:
你
数组()
这里我想要的是有一个超级类
my
,它有一个函数toArray
,用于将对象转换为数组。现在所有扩展这个类的类都应该继承这个函数并可以使用它。但是在这里调用对象上的toArray,您将返回空数组。同时,在对象上调用myName
,您将显示子类的名称。唯一的属性($yoo
)是私有的,因此无法从定义了toArray()的my
访问。唯一的属性($yoo
)是私有的,因此无法从my
,其中toArray()访问已定义。在类中尝试将$yoo
设置为受保护的而不是私有的根据作用域指定对象的属性。参见doc yes,get_object_vars()根据作用域获取给定对象的可访问(非静态)属性。见医生