[英]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.