使用$ this-> my_func()或parent :: my_func()调用继承的成员函数?

时间:2014-05-09 23:34:49

标签: php wordpress oop inheritance

我一直在创建抽象类和接口以强制我的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

2 个答案:

答案 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();