我一直在创建抽象类和接口以强制我的Wordpress插件中的一致性,但我不确定是否应该通过使用parent :: some_function()或使用$ this-> some_function来调用继承函数( )?由于在两者之间来回跳跃看起来非常凌乱/混乱。
例如: 我应该使用getter / setter:
$this->get_my_var(); // indicating nothing about its origins except through comments
或
parent::get_my_var(); // indicating you can find it in the parent
答案 0 :(得分:2)
他们不是一回事。
class A {
protected function foo() {
return "a";
}
}
class B extends A {
protected function foo() {
return parent::foo() . "b";
}
public function bar() {
return $this->foo();
}
}
$b = new B();
var_dump($b->bar()); // "ab"
如果您有:
class B extends A {
...
public function bar() {
return parent::foo();
}
}
var_dump($b->bar()); // just "a"
foo
的{{1}}函数为B
的{{1}}函数添加了一些内容。这是一种常见的模式。
在foo
中调用A
是否合适取决于您的设计选择,我个人认为这有点不确定。在parent::foo
中拨打bar
就行了。
答案 1 :(得分:0)
我只在构造函数,析构函数和静态方法中使用parent::
。对于其他一切,我相信人们知道对象继承是如何工作的。我会使用$this->get_my_var();