daG*_*vis 2 php oop inheritance class-design multiple-inheritance
我有课名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没有权限的情况下使用(in Controller_Permissions).
怎么做而不重复代码?我不想要另一堂课Controller_TemplateWithoutPermissions.
控制器,模板和权限就是例如.
Rob*_*bin 12
多重继承的常见替代方法是使用组合.这使得这种关系成为"有一个",而不是一个"是一个"的关系.即在上面的示例中,您可能将ControllerHome从ControllerTemplate继承,但将一些ControllerPermissions作为变量.这样ControllerHome 是一个 ControllerTemplate并具有 ControllerPermissions.