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