gpt4 book ai didi

php - parent ::或$this->

转载 作者:搜寻专家 更新时间:2023-10-31 21:15:37 24 4
gpt4 key购买 nike

我正在开始一个新项目,但我不确定获取 parent 方法的最佳/正确原因是什么?

为什么要这样做

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');
}
}

谢谢。

最佳答案

他们做了两件不同的事情:

当您调用 $this->method() 时,您调用的是在您自己的子类(本例中为 ControllerForum)中定义的 method()

当您调用 parent::method() 时,您调用的是在父类 (ControllerAbstract) 中定义的方法。

因此,假设我们在 ControllerAbstract 和 ControllerForum(覆盖)中定义 getModel,那么调用一个或另一个将执行不同的代码。除非您需要特定的行为,否则我会使用继承的方法(第一种形式)。

编辑:@Chris 这是继承,这意味着子类(扩展父类)将拥有父类的方法和属性。当你使用$this->method()时你并没有调用父类的方法,而是调用了当前类继承自父类的方法。参见 PHP 5 inheritance

关于php - parent ::或$this->,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com