Aktualnie akceptowana odpowiedź @Franck będzie działać, ale w rzeczywistości nie jest to dziedziczenie wielokrotne, ale instancja potomna klasy zdefiniowanej poza zakresem, jest też __call()
skrót - rozważ użycie $this->childInstance->method(args)
wszędzie tam, gdzie potrzebujesz metody klasy ExternalClass w klasie „rozszerzonej”.
Dokładna odpowiedź
Nie, nie możesz, odpowiednio, nie, ponieważ instrukcja extends
słowa kluczowego mówi:
Klasa rozszerzona jest zawsze zależna od jednej klasy bazowej, co oznacza, że dziedziczenie wielokrotne nie jest obsługiwane.
Prawdziwa odpowiedź
Jednak, jak poprawnie zasugerował @adam, NIE zabrania to używania wielokrotnego dziedziczenia hierarchicznego.
MOŻESZ rozszerzyć jedną klasę o inną, o kolejną i tak dalej ...
Takim prostym przykładem byłoby:
class firstInheritance{}
class secondInheritance extends firstInheritance{}
class someFinalClass extends secondInheritance{}
//...and so on...
Ważna uwaga
Jak pewnie zauważyłeś, możesz wykonywać wielokrotne (2+) intehritance przez hierarchię tylko wtedy, gdy masz kontrolę nad wszystkimi klasami wchodzącymi w skład procesu - oznacza to, że nie możesz zastosować tego rozwiązania np. Z klasami wbudowanymi lub z klasami, które po prostu nie można edytować - jeśli chcesz to zrobić, pozostaje rozwiązanie @Franck - instancje podrzędne.
... I na koniec przykład z wynikami:
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();
Które wyjścia
I am a of A
I am b of B
I am c of C