PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了模仿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中一样),因为我认为这不是一个优雅的解决方案.

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

解决方法:

虑使用Decorators或重新虑您的设计.

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

大佬总结

以上是大佬教程为你收集整理的模仿PHP中的多重继承全部内容,希望文章能够帮你解决模仿PHP中的多重继承所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: