PHP: Why isn't it possible to extend more than one class?
当我想扩展两个父类时,我遇到了一种情况,但是PHP不允许这样做。为什么我不能多出一个类,但多出一个类。扩展许多类有什么问题?在我看来这是一件很明显的事情,直到我得到了解析错误。这是个坏习惯吗?如果是这样,还有什么选择呢?用其他语言可以吗?
为什么在某些/大多数编程语言中禁止多重继承与菱形问题http://en.wikipedia.org/wiki/diamond_problem争论不休。
简单点说,如果你有一辆可以游泳和驾驶的车,因为它继承了车辆和船只,那么在执行移动功能时会发生什么!?
尝试使用接口并遵循策略模式或状态模式。
您可能在寻找:PHP中的多重继承。
这在Python中似乎是可能的。
看一下,我可以在PHP中使用一个以上的类来扩展一个类吗?
实现同一方法的单独类对于多继承来说不是一个好的参数,因为当前可以实现多个接口。你不能用同样的方法实现两个接口。引用自http://www.php.net/manual/en/language.oop5.interfaces.php:"一个类不能实现两个共享函数名的接口,因为它会导致歧义。"
PHP不支持它。但是,可以使用runkit、apd或者仅仅通过覆盖uuu调用和uuu get来模拟多个类的继承来模拟它。symfony(我自己也建议)还为多重继承提供了"sfmixin"或"sfmixer"。
Is it a bad practice? If so, what are alternatives?
号
除非语言是专门为它设计的,是的。考虑一下,您有两个类,
现在,你给
我知道这个问题已经2岁了,但我只是遇到了同样的问题。我的工作是这样的:如果你有一个常规类和两个摘要,并且想要扩展它们,例如
1 2 3 | abstract class AbstractOne extends AbstractTwo { } |
然后像这样添加到主类:
1 2 3 | class MyMainClass extends AbstractOne { } |
号
这样,它继承了AbstractOne和AbstractTwo。