पहचान
PHP आपको कक्षाओं में जादू के तरीकों की घोषणा करके विधि कॉल और संपत्ति एक्सेस को ओवरलोड करने की अनुमति देता है । यह कोड को सक्षम करता है जैसे:
class Foo {
public function __get($name) { return 42; }
}
$foo = new Foo;
echo $foo->missingProperty; // prints "42"
ओवरलोडिंग इंस्टेंस प्रॉपर्टीज और तरीकों के अलावा, PHP 5.3.0 के बाद से हम static
मैजिक मेथड को ओवरराइड करके कॉल के तरीकों को भी ओवरलोड कर सकते हैं __callStatic
।
कुछ छूट रहा है
उपलब्ध कार्यक्षमता से क्या विशिष्ट रूप से गायब है , उदाहरण के लिए स्थैतिक गुणों को अधिभारित करने की क्षमता है :
echo Foo::$missingProperty; // fatal error: access to undeclared static property
यह सीमा स्पष्ट रूप से प्रलेखित है :
संपत्ति अधिभार केवल वस्तु संदर्भ में काम करता है। इन जादू विधियों को स्थिर संदर्भ में ट्रिगर नहीं किया जाएगा। इसलिए इन तरीकों को घोषित नहीं किया जाना चाहिए
static
। PHP 5.3.0 के अनुसार, मैजिक ओवरलोडिंग विधियों में से एक घोषित होने पर चेतावनी जारी की जाती हैstatic
।
लेकिन क्यों?
मेरे प्रश्न हैं:
- क्या कोई तकनीकी कारण है कि यह कार्यक्षमता वर्तमान में समर्थित नहीं है? या शायद (एक कंपकंपी) राजनीतिक कारण?
- क्या अतीत में इस कार्यक्षमता को जोड़ने के लिए कोई निरर्थक प्रयास हुए हैं?
सबसे महत्वपूर्ण बात, सवाल यह नहीं है कि "उपयोगकर्तालैंड PHP में गतिशील स्थिर गुण कैसे हो सकते हैं?"। उस ने कहा, यदि आप एक विशेष रूप से प्यारा कार्यान्वयन के बारे में जानते हैं, जिसके आधार पर __callStatic
आप साझा करना चाहते हैं तो हर तरह से ऐसा करें।
__getStatic()
और__setStatic()
पर स्थिर कक्षाएं, यह अभी भी instantiable कक्षाओं के लिए इस कार्यक्षमता के लिए उपयोगी होगा। क्या आप इस दिशा में किसी कदम से अवगत हैं?