不是真正的问题,更像是我的好奇心,但作为一个例子,说我有一个PHP类:
class baseTestMain
{
protected function testFunction()
{
echo 'baseTestMain says hi';
}
}
Run Code Online (Sandbox Code Playgroud)
以及从上面那个类扩展的另一个类:
class aSubClass extends baseTestMain
{
public function doingSomething()
{
parent::testFunction();
//someextrastuffhere
}
}
Run Code Online (Sandbox Code Playgroud)
通常,当我想在子类中定义一个新方法时调用父方法时,我会做上面的事情 - parent::methodnamehere()但是parent::你也可以使用$this->methodname()和操作相同.
class aSubClass extends baseTestMain
{
public function doingSomething()
{
$this->testFunction();
//someextrastuffhere
}
}
Run Code Online (Sandbox Code Playgroud)
所以我要问的是,我应该使用parent::testFunction();还是使用$this->testFunction();?或者我错过了它有什么不同吗?如果没有,您的偏好或首选方法是什么?
请注意,我没有覆盖或扩展子类中的该函数,实质上是从父级继承实现.
Bol*_*ock 31
在你的情况下,从aSubClass::testFunction()继承baseTestMain::testFunction(),使用$this->testFunction().您应该只parent::testFunction()在您的子实体中在其实现中覆盖该方法时使用.
不同之处在于,如果子项具有自己的实现而不是从父项继承,则parent::在$this->调用子项的实现时调用父项的实现.