我有一个名为Controller_Home
的类。它应该继承自 Controller_Permissions
和 Controller_Template
。任何以 Controller_
为前缀的类都必须继承自 Controller
类。
如果 PHP 支持多重继承(我的例子),我可以这样做:
class Controller_Home extends Controller_Permissions, Controller_Template {
和Controller_Permissions
、Controller_Template
:
Controller_Permissions extends Controller {
Controller_Template extends Controller {
现在我需要做这样的事情:
class Controller_Home extends Controller_Template {
class Controller_Permissions extends Controller_Template {
Controller_Template extends Controller {
好的,成功了!
现在我需要在没有权限的情况下使用Controller_Template
(在Controller_Permissions
中)。
如何在不重复代码的情况下做到这一点?我不需要另一个类 Controller_TemplateWithoutPermissions
。
Controller 、模板和权限只是示例。
最佳答案
多重继承的常见替代方法是使用组合。这使得该关系成为“具有”关系,而不是"is"关系。即,在上面的示例中,您可能有 ControllerHome 从 ControllerTemplate 继承,但将一些 ControllerPermissions 作为变量。这样,ControllerHome 是一个 ControllerTemplate 并且具有 ControllerPermissions。
关于php - 在没有多重继承的情况下如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7709051/