PHP 5.4.5 के अंदर किसी सदस्य चर के __invoke विधि को कैसे कॉल करें। मैं किसी ऑब्जेक्ट को आमंत्रित करने की कोशिश कर रहा हूं जिसे किसी अन्य ऑब्जेक्ट के सदस्य के रूप में संग्रहीत किया जाता है। इस तरह (बहुत मोटे तौर पर)कक्षा
class A {
function __invoke() { ... }
}
class B {
private a = new A();
...
$this->a(); <-- runtime error here
}
यह रनटाइम त्रुटि उत्पन्न करता है, बेशक, क्योंकि कोई विधि नहीं है। लेकिन अगर मैं इस तरह की कॉल लिखता हूं:
($this->a)();
तो मुझे एक वाक्यविन्यास त्रुटि मिलती है।
बेशक, मैं
$this->a->__invoke();
लिख सकते हैं लेकिन यह है कि असह्य रूप में बदसूरत लगता है, और नहीं बल्कि functors की बात को नजरअंदाज। मैं बस सोच रहा था कि कोई बेहतर (या आधिकारिक) तरीका है या नहीं।
सीधे बुला __invoke
, जो आप पहले ही उल्लेख किया:
धन्यवाद इगोर। तीनों में से, चर के लिए असाइनमेंट सबसे स्पष्ट जैसा लगता है, लेकिन उनमें से कोई भी बहुत अच्छा नहीं है। क्या कोई समझता है कि क्यों 'स्पष्ट' वाक्यविन्यास $-> a() को सदस्य की __invoke विधि नहीं मिल सकती है - क्यों सदस्य सदस्य मूल रूप से नग्न परिवर्तनीय वाक्यविन्यास के लिए अलग है ?? –
क्योंकि यह संदिग्ध है। '$ this-> a()' या तो विधि 'ए' या सदस्य '$ a' हो सकता है। PHP में उन दोनों को काफी दृढ़ता से अलग किया गया है (उदाहरण के लिए जेएस के विपरीत)। – igorw
आह। यह समझ आता है। धन्यवाद। –