Принятый в настоящее время ответ @Franck будет работать, но на самом деле это не множественное наследование, а дочерний экземпляр класса, определенный вне области, также есть __call()
сокращение - рассмотрите возможность использования $this->childInstance->method(args)
любого метода класса ExternalClass в любом месте в «расширенном» классе.
Точный ответ
Нет, вы не можете, соответственно, не совсем, как говорится в руководстве по extends
ключевым словам:
Расширенный класс всегда зависит от одного базового класса, то есть множественное наследование не поддерживается.
Реальный ответ
Однако, как правильно подсказал @adam, это НЕ запрещает вам использовать множественное иерархическое наследование.
Вы МОЖЕТЕ продлить один класс, с другим и другой с другим и так далее ...
Вот довольно простой пример:
class firstInheritance{}
class secondInheritance extends firstInheritance{}
class someFinalClass extends secondInheritance{}
//...and so on...
Важная заметка
Как вы могли заметить, множественное (2+) интегрирование по иерархии можно выполнять только в том случае, если у вас есть контроль над всеми классами, включенными в процесс - это означает, что вы не можете применить это решение, например, со встроенными классами или с классами, которые вы используете. просто не можете редактировать - если вы хотите это сделать, у вас остается решение @Franck - дочерние экземпляры.
... И, наконец, пример с некоторым выводом:
class A{
function a_hi(){
echo "I am a of A".PHP_EOL."<br>".PHP_EOL;
}
}
class B extends A{
function b_hi(){
echo "I am b of B".PHP_EOL."<br>".PHP_EOL;
}
}
class C extends B{
function c_hi(){
echo "I am c of C".PHP_EOL."<br>".PHP_EOL;
}
}
$myTestInstance = new C();
$myTestInstance->a_hi();
$myTestInstance->b_hi();
$myTestInstance->c_hi();
Какие выводы
I am a of A
I am b of B
I am c of C