[英]PHP replace extends with another class when extending
让我们采用以下类结构:
class A {
... has all the functionalities of A
}
class B extends A {
... has all the functionalities of A and B
}
还有另外两个类结构:
class C extends B {
... has all the functionalities of A and B and C
}
class D extends A {
... all the functionalities of A, and D
}
如果不允许我修改class A
class B
或class B
类,我如何轻松创建一个类,这将获得我所有四个类的所有功能? PHP
可以实现这样的功能吗?
编辑:
我想这样做的原因如下,我愿意就其他可以实现我想要的结果的方式提出建议:
我有一个模块,它有几个我计划在其上构建的类,我不想直接编辑该模块,但我想向该模块的多个类添加潜在的功能(这是class A
class B
和class B
来自)。
所以要编辑class A
,我会创建一个class D
,它扩展它,并添加新功能,或者重写已经添加的需要在class D
重写的功能。
但是这个模块中有多个类,它们在结构上与class B
相似,我也想潜在地修改它,因此我的class C
。 但是如果我修改了class D
的模块class A
,我将需要我的新class C
来扩展class D
而不是class A
。 (希望你还可以关注我:P)
不,在 PHP 中,由于“ 钻石问题”,不可能从多个父代继承。 在您的情况下,这意味着您可以扩展c
以实现a, b & c
,但您也不能扩展d
。 由于您无法修改其他类,因此这里没有正确的解决方案,但我建议您查看特征( https://www.php.net/manual/en/language.oop5.traits.php ),因为这些允许你从多个特征“继承”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.