【问题标题】:Cannot use inheritance in MVC, PHP不能在 MVC、PHP 中使用继承
【发布时间】:2016-02-11 16:34:37
【问题描述】:

请帮我解决以下问题。 我得到了带 DefaultModel 的 DefaultController :

Class DefaultController {
    public function __construct(DefaultModel $model){
         $this->model = $model;
    }
}

我得到了 AdminController,它将从 DefaultController 继承,但它有自己的名为 AdminModel 的个人模型:

Class AdminController extends DefaultController {
    public function __construct(AdminModel $model){
         parent::__contstruct(DefaultModel $model);
         $this->model = $model;
    }
}

我收到以下错误:未知变量 DefaultModel。 如果我撤消 DefaultModel,则会出现下一个错误:得到了 AdminModel,预期为 DefaultModel。

请帮我解决这个问题, 非常感谢, 祝你有美好的一天!

【问题讨论】:

    标签: php oop model-view-controller


    【解决方案1】:

    调用parent::__construct 时不包括类型。您的构造函数应如下所示:

    public function __construct(AdminModel $model){
         parent::__contstruct($model);
         $this->model = $model;
    }
    

    【讨论】:

    • 这样做有一个错误叫做:Expected DefaultModel, got AdminModel
    • 错误... parent::__construct($model); (没有额外的 t)会更好吗?
    • 如果你的AdminModel 扩展DefaultModel,它不会给你一个错误。如果您不想对模型使用继承,则可以为模型声明一个接口。
    猜你喜欢
    • 2012-04-14
    • 2016-06-28
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多