【问题标题】:Why can't I set a class' properties in it's parent's constructor? (php)为什么我不能在它的父构造函数中设置一个类的属性? (php)
【发布时间】:2016-03-29 13:31:51
【问题描述】:

我一直在关注无框架的 php 教程(相关章节:https://github.com/PatrickLouys/no-framework-tutorial/blob/master/07-inversion-of-control.md)。在扩展它时,作为一个简短的例子,当我实例化类的各种属性时一切正常:

use Http\Request;

class User extends Super_user
{
    private $request; 

    public function __construct(Request $request)
    {
        parent::__construct();
        $this->request = $request;
    }
}

但是,当我尝试在父级中设置请求时,我似乎得到了错误:传递给 Namespace\Controllers\Super_user::__construct() 的参数 1 必须是 Namespace\Template\Request 的一个实例,没有给出,调用在...

class User extends Super_user
{

    public function __construct()
    {
        parent::__construct();
    }
}

...

use Http\Request;

class Super_user
{
    public function __construct()
    {
        $this->request = $request;
    }

}

如果您是 PHP 新手,我们将不胜感激...

【问题讨论】:

  • 看起来您混淆了命名空间?您使用 HTTP\Request。但是错误说它需要must be an instance of Namespace\Template\Request。也许不是,我还没有深入研究 PHP 命名空间(为遗留代码工作万岁)

标签: php class parent-child extends php-5.2


【解决方案1】:

由于 Super_user 类在其构造函数中需要一个 Request 对象。 你应该像这样声明你的用户的构造方法

public function __construct(Request $request)
{
    parent::__construct($request);  // Pass $request object to Parent's method
    $this->request = $request;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2021-11-15
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多