Принятый в настоящее время ответ @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