Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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 访问父类';儿童财产_Php_Oop - Fatal编程技术网

Php 访问父类';儿童财产

Php 访问父类';儿童财产,php,oop,Php,Oop,请参见以下示例(PHP) 我是OOP新手,有点无知 在这里,为了访问parents属性,我使用了该类的一个实例,这似乎是错误的:S(不需要是我的孩子)。有没有一种简单的方法,使我可以将父属性与子属性同步,并且可以直接访问$this->anotherP,而不必使用$this->parent->anotherP?因为您的子类正在扩展您的父类,子类将看到父类中的公共或受保护的每个属性和方法,就像它们是在子类中定义的一样,反之亦然 当子类扩展父类时,可以将其视为“子类是父类”——这意味着子类具有父类的属

请参见以下示例(PHP)

我是OOP新手,有点无知


在这里,为了访问parents属性,我使用了该类的一个实例,这似乎是错误的:S(不需要是我的孩子)。有没有一种简单的方法,使我可以将父属性与子属性同步,并且可以直接访问$this->anotherP,而不必使用$this->parent->anotherP?

因为您的
子类正在扩展您的
父类,
子类将看到
父类
中的
公共
受保护
的每个属性和方法,就像它们是在
子类
中定义的一样,反之亦然

子类
扩展
父类
时,可以将其视为“
子类
父类
”——这意味着
子类
具有
父类
的属性,除非以另一种方式重新定义这些属性

(顺便说一句,请注意“
parent
”在PHP中是一个保留关键字——这意味着您不能用该名称命名类)


下面是一个“父”类的快速示例:

这是“儿童”课:

可以这样使用:

$a = new Child();
var_dump($a->getData());
您将得到以下输出:

int 123456
这意味着
$data
属性在
MyParent
类中定义,并在同一
MyParent
类的方法中初始化,可由
子类访问,就像它是自己的一样



让事情变得简单:由于
子项
“是一个“
我的父项
,它不需要保留指向。。。本身;-)

这可以节省您几个小时的搜索时间

记住:您的子类只继承父类中定义的属性。。。所以,如果您使用父类实例化一个对象,然后用数据填充它,那么这个数据在您的子类中将不可用

当然,这是非常明显的,但我猜其他人可能会遇到同样的问题

超级简单的解决方案不是扩展任何内容,只需通过构造函数将父类的$object传递给子类即可。这样,您就可以访问父类生成的对象的所有属性和方法

范例

class child {

    public parentObject;

    public function __construct($parentObject) {
        $this->parentObject = $parentObject;
    }

}
如果$parentObject具有公共属性$name,则可以使用以下函数在子类中访问它:

public function print_name() {
    echo $this->parentObject->name;
}

是 啊对父类的调用::_构造正是我所需要的:哦,是的,这是一件棘手的事情,我不想提及它:如果您的子类定义了一个构造函数,PHP将不会调用父类的构造函数——这意味着您必须自己调用它(请参阅注释)非常好的解释!
int 123456
class child {

    public parentObject;

    public function __construct($parentObject) {
        $this->parentObject = $parentObject;
    }

}
public function print_name() {
    echo $this->parentObject->name;
}