मैं इस क्षेत्र में अब दिनों से संघर्ष कर रहा हूं, और मैं एक निष्कर्ष तक पहुंच गया हूं, लेकिन जब तक मैं हारने से पहले निष्कर्ष नहीं ढूंढ रहा था, तो मैं यह देखने की कोशिश करूंगा कि मैं क्या देख रहा हूं अन्य लोग कहते हैं। विश्वास आखिरी मर जाता है ...विस्तारित PHP स्थैतिक वर्ग
मान लें कि हमारे पास एक सुपरक्लास (जिसे "सुपर" कहा जाता है) और उप-वर्ग (जिसे "सब" कहा जाता है) है।
class Super {
protected static $title = 'super';
public static function get_class_name()
{
echo __CLASS__;
}
public static function get_title()
{
echo self::$title;
}
}
class Sub extends Super {
protected static $title = 'sub';
}
अब, आप शायद उम्मीद करेंगे के बाद से उप सुपर फैली हुई है, कि उप अब सुपर के तरीकों के सभी के वारिस हैं, तथापि, यह केवल उप के तरीकों के लिए संदर्भ प्राप्त करने के लिए लगता है।
मैं यह कहना है क्योंकि अगर मैं फोन:
Sub::get_class_name();
उत्पादन होता है "सुपर", और नहीं "सब"।
और अगर मैं फोन:
Sub::get_title();
फिर, उत्पादन "सुपर" है, और मैं भी $ शीर्षक उप में घोषित किया है।
तो इसका मतलब है कि जब मैं विरासत में स्थिर कार्य कहता हूं, तो फ़ंक्शन का दायरा सुपर क्लास होगा, जिसे कॉल नहीं किया जाता है (भले ही आप बैकट्रैक प्रिंट करते हैं, यह दिखाएगा कि कॉल सुपरक्लास पर किया गया था! !!), और इस कॉल को प्राप्त करने के लिए उप-वर्ग के रूप में दायरे को प्राप्त करने के लिए, मुझे उस सबक्लास के अंदर उस विधि को फिर से शुरू करने की आवश्यकता है। वैसे इस तरह के वर्गों को विस्तारित करने के उद्देश्य को हराता है, है ना?
तो मेरा सवाल यह है कि, क्या मैं कभी भी स्थिर वर्ग का विस्तार कर सकता हूं, विरासत में से किसी एक को कॉल कर सकता हूं और सबक्लास का दायरा रख सकता हूं? या कम से कम इसके वर्ग नाम की पहचान करने में सक्षम होने के लिए? और यदि नहीं, तो मैं कभी भी स्थिर कक्षाओं का विस्तार क्यों करना चाहूंगा?
धन्यवाद!
ठीक है, अब मुझे यह मिल गया है। – treznik