Derzeit Antwort von @Franck akzeptiert wird funktionieren , aber es ist nicht in Mehrfachvererbung Tatsache , sondern ein Kind Instanz der Klasse des Bereichs definiert aus, auch gibt es die __call()
Kurzschrift - man denke nur unter Verwendung von $this->childInstance->method(args)
überall Sie ExternalClass Klassenmethode in „erweiterten“ Klasse benötigen.
Genaue Antwort
Nein, Sie können nicht, nicht wirklich, wie das Handbuch des extends
Schlüsselworts sagt:
Eine erweiterte Klasse ist immer von einer einzelnen Basisklasse abhängig, dh Mehrfachvererbung wird nicht unterstützt.
Echte Antwort
Wie @adam jedoch richtig vorgeschlagen hat, verbietet dies NICHT die Verwendung mehrerer hierarchischer Vererbungen.
Sie können eine Klasse mit einer anderen und eine andere mit einer anderen erweitern und so weiter ...
Ein ziemlich einfaches Beispiel hierfür wäre:
class firstInheritance{}
class secondInheritance extends firstInheritance{}
class someFinalClass extends secondInheritance{}
//...and so on...
Wichtige Notiz
Wie Sie vielleicht bemerkt haben, können Sie nur dann mehrere (2+) Intehritanzen nach Hierarchie durchführen, wenn Sie die Kontrolle über alle im Prozess enthaltenen Klassen haben. Dies bedeutet, dass Sie diese Lösung nicht anwenden können, z. B. mit integrierten Klassen oder mit Klassen, die Sie verwenden kann einfach nicht bearbeitet werden - wenn Sie das tun möchten, bleibt Ihnen die @Franck-Lösung - untergeordnete Instanzen.
... und zum Schluss Beispiel mit etwas Ausgabe:
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();
Welche Ausgänge
I am a of A
I am b of B
I am c of C