Множественное наследование позволяется на уровне класса в PHP?
Множественное наследование страдает от проблемы алмаза , которая еще не была (согласована) решена в PHP. Таким образом, в PHP нет множественного наследования.
BaseClass
/\
/ \
ClassA ClassB
\ /
\/
ClassC
Если бы оба ClassA
и ClassB
определили свой собственный метод foo ()
, какой из них вы бы назвали в ClassC
?
] Вам предлагается либо использовать композицию объектов , либо интерфейсы (которые допускают множественное наследование), либо - если вы используете горизонтальное повторное использование - загляните в декоратор или Стратегия паттерн до тех пор, пока у нас не будет Черты (или Прививки , или как там они тогда будут называться).
Некоторая ссылка:
Вы можете имитировать это, используя делегирование методов и свойств, но это не будет работать с is_a ()
или instanceof
]:
class A extends B
{
public function __construct($otherParent)
{
$this->otherParent = $otherParent;
}
public function __call($method, $args)
{
$method = [$this->otherParent, $method];
return call_user_func_array($method, $args);
}
}