我正在开始一个新项目,我不确定最好/正确的为什么要获得父母方法?
应该这样做
class ControllerForum extends ControllerAbstract
{
public function __construct()
{
parent::__construct();
}
public function actionViewThread($threadName, (int) $threadId)
{
$threadModel = $this->getModel('ModelThread');
}
}
或者这个原因
class ControllerForum extends ControllerAbstract
{
public function __construct()
{
parent::__construct();
}
public function actionViewThread($threadName, (int) $threadId)
{
$threadModel = parent::getModel('ModelThread');
}
}
谢谢。
答案 0 :(得分:3)
他们做了两件不同的事情:
当您致电$this->method()
时,您正在调用您自己的子类中定义的method()
(在本例中为ControllerForum)。
当您致电parent::method()
时,您正在调用父类(ControllerAbstract)中定义的那个。
因此,如果我们在ControllerAbstract和ControllerForum(override)中定义getModel,则调用其中一个或另一个将执行不同的代码。除非你需要特定的行为,否则我会使用继承的方法(第一种形式)。
编辑:@Chris它是继承,它意味着子类(扩展父类)将具有父类的方法和属性。当您使用$this->method()
时不调用父方法时,可以调用从父类继承的当前类的方法。见PHP 5 inheritance
答案 1 :(得分:-1)
如果你能够创建类的对象,那么通常我们使用第一种方式
$threadModel = $this->getModel('ModelThread');
第二种方法是在我们想要调用没有对象的函数时使用
$threadModel = parent::getModel('ModelThread');
所以它基于需要
由于