A resposta atualmente aceita por @Franck funcionará, mas na verdade não é uma herança múltipla, mas uma instância filho da classe definida fora do escopo; também existe uma __call()
abreviação - considere usar em $this->childInstance->method(args)
qualquer lugar que você precise do método da classe ExternalClass na classe "estendida".
Resposta exata
Não, você não pode, respectivamente, não realmente, como diz o manual da extends
palavra-chave :
Uma classe estendida sempre depende de uma única classe base, ou seja, herança múltipla não é suportada.
Resposta real
No entanto, como o @adam sugeriu corretamente, isso NÃO proíbe o uso de várias heranças hierárquicas.
Você pode estender uma classe, com outra e outra com outra e assim por diante ...
Um exemplo bem simples disso seria:
class firstInheritance{}
class secondInheritance extends firstInheritance{}
class someFinalClass extends secondInheritance{}
//...and so on...
Nota importante
Como você deve ter notado, você só pode fazer várias inter-relações (2+) por hierarquia se tiver controle sobre todas as classes incluídas no processo - ou seja, não poderá aplicar esta solução, por exemplo, com classes internas ou com classes que você simplesmente não pode editar - se você quiser fazer isso, fica com a solução @Franck - instâncias filho.
... E, finalmente, exemplo com alguma saída:
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();
Quais saídas
I am a of A
I am b of B
I am c of C