在PHP OOP中,可以通过外部引用该对象来调用对象的父方法吗?
Class ObjectOne {
protected function method() {
// Does something simple
}
}
Class ObjectTwo extends ObjectOne {
protected function method() {
$temp = clone $this;
$this->change_stuff();
if(parent::method()) {
// Do more stuff here
$temp->method();
// This will call this method, not the parent's method.
}
}
protected function change_stuff() {
// Change this object's stuff
}
}
我无法调用parent :: method(),因为这会导致当前对象执行它的方法。 我想改变$ temp。
解决
我通过编写另一个从类中调用parent::update()
方法的函数来解决它:
Class ObjectOne {
protected function method() {
// Does something simple
}
}
Class ObjectTwo extends ObjectOne {
protected function method() {
$temp = clone $this;
$this->change_stuff();
if(parent::method()) {
// Do more stuff here
$temp->update_parent();
// This will call this method, not the parent's method.
}
}
protected function change_stuff() {
// Change this object's stuff
}
protected function update_parent() {
return parent::update();
}
}
答案 0 :(得分:4)
$temp->parent::update()
没有意义。
为什么不再parent::update()
而不是$temp->parent::update();
您有两个名为update()
的方法如果您调用$this->update()
,它将从调用的对象中调用该方法。
你可以做到
parent::update();
这将在update()
类
ObjectOne
方法
答案 1 :(得分:0)
您可以使用以下语法
调用任何受保护和公共父方法parent::method_name();
在您的情况下,这将是: 父::更新();