CF10 में, मैं TestHelper ऑब्जेक्ट में MissingMethod फ़ंक्शन का उपयोग कर एक वेरिएबल टेस्ट ऑब्जेक्ट तक पहुंच बनाना चाहता हूं, लेकिन मुझे एक त्रुटि मिल रही है।onMissingMethod का उपयोग ऑब्जेक्ट वेरिएबल्स तक नहीं पहुंच सकता
Test.cfc
component {
public Any function init(){
instance = { x = 1 };
return this;
}
public numeric function getX(){
return instance.x;
}
}
TestHelper.cfc
component {
public Any function init(){
variables.testObj = new Test();
return this;
}
public any function onMissingMethod(required string missingMethodName, required struct missingMethodArguments){
var func = variables.testObj[ arguments.missingMethodName ];
return func(argumentCollection = arguments.missingMethodArguments);
}
}
वस्तु
obj = new TestHelper();
writeOutput(obj.getX()); //Element INSTANCE.X is undefined in VARIABLES
CF10 में कॉलिंग, यह मुझे एक त्रुटि उस तत्व एक्स उदाहरण में अपरिभाषित है देता है। यह चर आवृत्ति को पहचानने के लिए प्रतीत नहीं होता है। मैं टेस्टहेल्पर में getX फ़ंक्शन को स्पष्ट रूप से परिभाषित कर सकता था, लेकिन मुझे उम्मीद थी कि मैं ऑनमिशन मोड विधि का उपयोग कर सकता हूं।
क्या मैं गलत समझ रहा हूं कि MissingMethod को यहां कैसे काम करना चाहिए? एफडब्ल्यूआईडब्ल्यू, कोड रेलो में काम करता है।
एडम, आप सही (हमेशा की तरह) हैं। जब मैंने रेलो में इसका परीक्षण किया, तो मैं वास्तव में 'वापसी चर ..testObj [arguments.missingMethodName] कर रहा था (तर्क चयन = तर्क। MissingMethodArguments); '। लेकिन सीएफ 10 को इस कोड को पसंद नहीं है, इसलिए मैंने सोचा कि मैं सिर्फ एक वैरिएबल func को विधि असाइन कर सकता हूं और फिर इसे अगली पंक्ति पर कॉल कर सकता हूं। मुझे एहसास नहीं हुआ कि ऐसा करने से विधि इसके संदर्भ से बाहर हो जाती है। स्पष्टीकरण के लिए धन्यवाद। बहुत सराहना की। – user2943775
कोई जांच नहीं। हाँ, हमने एडोब को उस वाक्यविन्यास को जोड़ने की कोशिश की, लेकिन वे नहीं करेंगे। हालांकि 'invoke() 'है, जो मदद कर सकता है? https://wikidocs.adobe.com/wiki/display/coldfusionen/Invoke –