繁体   English   中英

在PHP中模仿多重继承

[英]Imitating Multiple Inheritance in PHP

我正在研究自己的MVC框架,发现自己陷入困境。 我需要以下结构:

 Controller  
      --> Backend_Controller
           --> Backend_Crud_Controller
       --> Frontend_Controller
           --> Frontend_Crud_Controller

'Backend_Crud_Controller'和'Frontend_Crud_Controller'都具有相同的功能,因此它们应该扩展另一个名为'Base_Crud_Controller'的类,唯一的区别来自实现不同机制的'后端/前端'控制器。

基本上他们应该继承这两个类但我的问题是'后端/前端'控制器不一定扩展'Base_Crud_Controller'。

我知道PHP中不存在多重继承,但我正在寻找解决方案,我选择克制Mixins(就像在Symfony中一样),因为我不认为这是一个优雅的解决方案。

接口不适合我,因为所有这些最终都应该作为应该实现方法的具体类。

考虑使用装饰器或重新考虑您的设计。

class FrontEnd
{
    protected $baseController;
    public function __construct(BaseController $controller) { /* ... */}
    // ... 
    // methods specific to Frontend
    // ...
    public function __call($method, args) {
        // implement __call to delegate other methods to BaseController
    }
}

你也可以创建一个BackEnd和Crud Decorator并将它们叠加在一起,例如

$crudBackEndController = new Crud(new BackEnd(new BaseController));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM