La réponse actuellement acceptée par @Franck fonctionnera mais ce n'est pas en fait un héritage multiple mais une instance enfant de classe définie hors de portée, il y a aussi le __call()
raccourci - envisagez d'utiliser $this->childInstance->method(args)
n'importe où vous avez besoin de la méthode de classe ExternalClass dans la classe "étendue".
Réponse exacte
Non, vous ne pouvez pas, respectivement, pas vraiment, comme leextends
dit le manuel du mot - clé :
Une classe étendue dépend toujours d'une seule classe de base, c'est-à-dire que l'héritage multiple n'est pas pris en charge.
Vraie réponse
Cependant, comme @adam l'a suggéré correctement, cela ne vous interdit PAS d'utiliser l'héritage hiérarchique multiple.
Vous POUVEZ étendre une classe, avec une autre et une autre avec une autre et ainsi de suite ...
Un exemple assez simple à ce sujet serait:
class firstInheritance{}
class secondInheritance extends firstInheritance{}
class someFinalClass extends secondInheritance{}
//...and so on...
Note importante
Comme vous l'avez peut-être remarqué, vous ne pouvez faire plusieurs intégrations (2+) par hiérarchie que si vous avez le contrôle sur toutes les classes incluses dans le processus - cela signifie que vous ne pouvez pas appliquer cette solution, par exemple avec des classes intégrées ou avec des classes que vous ne peut tout simplement pas modifier - si vous voulez faire cela, vous vous retrouvez avec la solution @Franck - les instances enfants.
... Et enfin exemple avec une sortie:
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();
Quelles sorties
I am a of A
I am b of B
I am c of C