@Franck द्वारा वर्तमान में स्वीकृत उत्तर काम करेगा, लेकिन यह वास्तव में एकाधिक वंशानुक्रम नहीं है, लेकिन कक्षा का एक बच्चा उदाहरण के दायरे से बाहर है, __call()
शॉर्टहैंड भी है - $this->childInstance->method(args)
"एक्सटेंडेड" क्लास में एक्सक्लास क्लास विधि की आवश्यकता है, बस कहीं भी उपयोग करने पर विचार करें ।
सटीक उत्तर
नहीं, आप नहीं कर सकते, क्रमशः, वास्तव में नहीं, जैसा कि कीवर्ड का मैनुअलextends
कहता है:
एक विस्तारित वर्ग हमेशा एक एकल आधार वर्ग पर निर्भर होता है, अर्थात एकाधिक वंशानुक्रम समर्थित नहीं होता है।
असली जवाब
हालाँकि @adam ने सही ढंग से सुझाव दिया है कि यह आपको कई hierarchal वंशानुक्रम का उपयोग करने के लिए मना नहीं करता है।
आप एक वर्ग का विस्तार कर सकते हैं, दूसरे के साथ और दूसरे के साथ और इसी तरह ...
इस पर बहुत सरल उदाहरण होगा:
class firstInheritance{}
class secondInheritance extends firstInheritance{}
class someFinalClass extends secondInheritance{}
//...and so on...
महत्वपूर्ण लेख
जैसा कि आपने देखा होगा, आप केवल पदानुक्रम के अनुसार कई (2+) समरूपता कर सकते हैं यदि आपके पास प्रक्रिया में शामिल सभी वर्गों पर नियंत्रण है - इसका मतलब है, आप इस समाधान को लागू नहीं कर सकते हैं जैसे अंतर्निहित कक्षाओं में या कक्षाओं के साथ। बस संपादित नहीं कर सकते हैं - यदि आप ऐसा करना चाहते हैं, तो आपको @Franck समाधान - चाइल्ड इंस्टेंस के साथ छोड़ दिया जाता है।
... और अंत में कुछ आउटपुट के साथ उदाहरण दें:
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();
जो आउटपुट देता है
I am a of A
I am b of B
I am c of C