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