Jawaban yang saat ini diterima oleh @Franck akan bekerja tetapi sebenarnya bukan multiple inheritance tetapi turunan anak dari kelas yang didefinisikan di luar ruang lingkup, juga terdapat __call()
singkatan - pertimbangkan untuk menggunakan di $this->childInstance->method(args)
mana saja Anda memerlukan metode kelas ExternalClass di kelas "extended".
Jawaban yang tepat
Tidak, Anda tidak dapat, masing-masing, tidak benar-benar, seperti yang dikatakan oleh kata kunci manualextends
:
Kelas yang diperluas selalu tergantung pada kelas basis tunggal, yaitu, multiple inheritance tidak didukung.
Jawaban nyata
Namun seperti yang disarankan @adam dengan benar, ini TIDAK melarang Anda untuk menggunakan banyak pewarisan hierarki.
Anda BISA memperpanjang satu kelas, dengan yang lain dan yang lain dengan yang lain dan seterusnya ...
Contoh yang cukup sederhana untuk ini adalah:
class firstInheritance{}
class secondInheritance extends firstInheritance{}
class someFinalClass extends secondInheritance{}
//...and so on...
Catatan penting
Seperti yang mungkin telah Anda perhatikan, Anda hanya dapat melakukan beberapa (2+) intehritance berdasarkan hierarki jika Anda memiliki kendali atas semua kelas yang termasuk dalam proses - itu artinya, Anda tidak dapat menerapkan solusi ini misalnya dengan kelas bawaan atau dengan kelas yang Anda miliki. tidak dapat mengedit - jika Anda ingin melakukan itu, Anda dibiarkan dengan solusi @Franck - instance anak.
... Dan akhirnya contoh dengan beberapa 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();
Output yang mana
I am a of A
I am b of B
I am c of C