La risposta attualmente accettata da @Franck funzionerà, ma in realtà non si tratta di ereditarietà multipla ma di un'istanza figlio di classe definita fuori ambito, inoltre esiste una __call()
scorciatoia: prendere in considerazione l'utilizzo di $this->childInstance->method(args)
qualsiasi luogo in cui sia necessario il metodo della classe ExternalClass nella classe "estesa".
Risposta esatta
No, non puoi, rispettivamente, non proprio, come dice il manuale della extends
parola chiave :
Una classe estesa dipende sempre da una singola classe base, ovvero l'ereditarietà multipla non è supportata.
Vera risposta
Tuttavia, come suggerito correttamente da @adam, questo NON ti proibisce di utilizzare l'ereditarietà multipla gerarchica.
È possibile estendere una classe, con un'altra e un'altra con un'altra e così via ...
Quindi un esempio piuttosto semplice su questo sarebbe:
class firstInheritance{}
class secondInheritance extends firstInheritance{}
class someFinalClass extends secondInheritance{}
//...and so on...
Nota importante
Come avrai notato, puoi eseguire più (2+) integrità per gerarchia solo se hai il controllo su tutte le classi incluse nel processo ; ciò significa che non puoi applicare questa soluzione, ad esempio con classi integrate o con classi che semplicemente non puoi modificarlo - se vuoi farlo, ti rimane la soluzione @Franck - istanze figlio.
... E infine esempio con qualche output:
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();
Quali uscite
I am a of A
I am b of B
I am c of C