Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为子类调用的Php get_对象_变量不起作用_Php - Fatal编程技术网

为子类调用的Php get_对象_变量不起作用

为子类调用的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);

我不知道我是否严重误解了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>';
?> 

输出为:

数组()


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

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

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

类中尝试将
$yoo
设置为
受保护的
而不是
私有的
根据作用域指定对象的属性。参见doc yes,get_object_vars()根据作用域获取给定对象的可访问(非静态)属性。见医生