如何对PHP进行多重继承

如何对PHP进行多重继承,php,oop,Php,Oop,我有两个名为RA_Shortcode和WPBakeryShortCodeContainer的类 现在我需要第三个类RA_ShortcodeContainer来继承这两个类 你知道如何实现它吗 提前感谢目前没有用PHP实现多重继承的方法。您可以使用Traits实现您试图实现的目标,也可以使用require、include或use语句(或依赖注入)包含类。然而,Traits似乎是最好的、最直接的方法。目前还没有用PHP实现多重继承的方法。您可以使用Traits实现您试图实现的目标,也可以使用requ

我有两个名为RA_Shortcode和WPBakeryShortCodeContainer的类

现在我需要第三个类RA_ShortcodeContainer来继承这两个类

你知道如何实现它吗


提前感谢

目前没有用PHP实现多重继承的方法。您可以使用Traits实现您试图实现的目标,也可以使用require、include或use语句(或依赖注入)包含类。然而,Traits似乎是最好的、最直接的方法。

目前还没有用PHP实现多重继承的方法。您可以使用Traits实现您试图实现的目标,也可以使用require、include或use语句(或依赖注入)包含类。然而,特质似乎是最好、最直接的方法。

简单的回答是:你没有


根据您的类名(顺便说一句,查找的概念),甚至不需要多个继承

当类
B
从类
a
继承时,意味着类
a
B
的特例

也许这能说明你的情况。假设您有一个class
Box
Cat
。现在您需要一个专门的
BoxForCats
类。猫的
BoxForCats
应该从不扩展自
Cat
。相反,你应该应用作文

您的
RA_ShortcodeContainer
类应该只有:

public function addShortcode(RA_Shortcode $shortcode)
{
    $this->list[] = $shortcode;
}
附言


简单的回答是:你没有


根据您的类名(顺便说一句,查找的概念),甚至不需要多个继承

当类
B
从类
a
继承时,意味着类
a
B
的特例

也许这能说明你的情况。假设您有一个class
Box
Cat
。现在您需要一个专门的
BoxForCats
类。猫的
BoxForCats
应该从不扩展自
Cat
。相反,你应该应用作文

您的
RA_ShortcodeContainer
类应该只有:

public function addShortcode(RA_Shortcode $shortcode)
{
    $this->list[] = $shortcode;
}
附言


PHP不允许在单个类上进行多重继承。您可能希望查找Traits作为中间点。从命名来看,我希望
wpbakeryshortcodecontainer
包含
RA_Shortcode
记录的集合,同样
RA_ShortcodeContainer
可能扩展
wpbakeryshortcodecontainer
(反之亦然)但是我不明白为什么一个容器需要扩展这个类,因为它是WPBakeryShortCodeContainer的容器,是第三方类,RA_Shortcode是我们的,它减少了我们每个项目的代码行,所以RA_ShortcodeContainer也需要RA_Shortcode的主要代码,所以我不想再写它们了RA_ShortCodeContainerHP不允许在单个类上进行多重继承。您可能希望查找Traits作为中间点。从命名来看,我希望
wpbakeryshortcodecontainer
包含
RA_Shortcode
记录的集合,同样
RA_ShortcodeContainer
可能扩展
wpbakeryshortcodecontainer
(反之亦然)但是我不明白为什么一个容器需要扩展这个类,因为它是WPBakeryShortCodeContainer的容器,是第三方类,RA_Shortcode是我们的,它减少了我们每个项目的代码行,所以RA_ShortcodeContainer也需要RA_Shortcode的主要代码,所以我不想再写它们了RA_ShortcodeContainer为什么特质看起来是最好的选择?使用Traits有什么直截了当的地方?@dbf——因为在PHP中使用
extends
方法是不可能实现多重继承的——要完成原作者试图做的事情(并且用最少的代码)唯一真正的方法就是使用Trait。特质的概念是可共享的代码。PHP文档中写道:“Trait是在PHP等单继承语言中进行代码重用的一种机制。Trait旨在通过使开发人员能够在不同类层次结构中的多个独立类中自由重用方法集来减少单继承的一些限制。”有代码的例子会更清楚地说明这一点。为什么特质似乎是最好的选择?使用Traits有什么直截了当的地方?@dbf——因为在PHP中使用
extends
方法是不可能实现多重继承的——要完成原作者试图做的事情(并且用最少的代码)唯一真正的方法就是使用Trait。特质的概念是可共享的代码。PHP文档中写道:“Trait是在PHP等单继承语言中进行代码重用的一种机制。Trait旨在通过使开发人员能够在不同类层次结构中的多个独立类中自由重用方法集来减少单继承的一些限制。”带有代码的示例将更清楚地说明这一点。