तो, यह देखते हुए कि मैं इस घटक का एक उदाहरण है:मैं उस संदर्भ को कैसे निर्धारित करूं जिसमें एक कोल्डफ्यूजन ऑब्जेक्ट रहता है?
foo.cfc
<cfcomponent>
<cffunction name="locateMe">
<cfreturn "I don't know where I live!">
</cffunction>
</cfcomponent>
और, इस दूसरे घटक fooParent.cfc:
<cfcomponent>
<cfset this.foo = createObject("component", "foo")>
</cfcomponent>
मान लीजिए कि मैं उदाहरण बना चलो "foo" के कुछ अलग-अलग तरीकों से:
<cfset myStruct = {}>
<cfset myStruct.foo = createObject("component", "foo")>
<cfset myFoo = createObject("component", "foo")>
<cfset myFooParent = createObject("component", "fooParent")>
<cfoutput>
#myStruct.foo.locateMe()#<br>
#myFoo.locateMe()#<br>
#myFooParent.foo.locateMe()#<br>
</cfoutput>
जैसा कि अपेक्षित था, वें है आउटपुट:
I don't know where I live!
I don't know where I live!
I don't know where I live!
क्या मैं जानना चाहता हूँ है, मैं संभवतः foo.cfc कि मुझे कुछ (कुछ भी!) किस संदर्भ में उसे लागू किया जा रहा है के बारे में बताएगा भीतर क्या कर सकते हैं? चूंकि सब कुछ आखिरकार (कम से कम) किसी प्रकार का दायरा रहता है, और सभी स्कॉप्स एक प्रकार का ऑब्जेक्ट होता है, जो मैं कह रहा हूं वह है कि मुझे किसी दिए गए तत्काल ऑब्जेक्ट के भीतर से युक्त ऑब्जेक्ट को निर्धारित करने के लिए वास्तव में कुछ तरीका पसंद आएगा। अंत में, foo.cfc निर्माण इतना है कि कुछ इस तरह मेरी उत्पादन हो सकता है, इसके बाद के संस्करण मेरी नमूना टुकड़ा से की किसी तरह:
I live within a "class coldfusion.runtime.Struct" instance!
I live within a "class coldfusion.runtime.VariableScope" instance!
I live within a "component cfjunk.fooParent" instance!
कहाँ उन मूल्यों से प्रत्येक getMetaData
गुजर वास्तविक युक्त से परिणाम का निरीक्षण द्वारा निर्धारित किया जा सकता है वस्तु संदर्भ।
अद्यतन टिप्पणी में मीका ने सुझाव दिया है, मैं यह करने के लिए "जावा" टैग जोड़ दिया है, के बाद से मुझे लगता है वह यह है कि समाधान आत्मनिरीक्षण के लिए जावा का उपयोग कर में झूठ सकता है में सही हो सकता है।
अद्यतन
बजाय क्या, एक विशुद्ध रूप से शैक्षणिक चर्चा हो मुझे स्पष्टीकरण दें कि मैं इस की जरूरत है यह बताने के लिए प्रकट होता है के रूप में इस छोड़ दें।
मैं CFWheels उपयोग कर रहा हूँ ORM तो जैसे अपने डेटा के लिए संदर्भ वापस पाने के लिए भी शामिल है के साथ:
var user = model("User").findOne(where="id=123", include="AuthSource", returnAs="object");
यह मैं करने के लिए एक उद्देश्य यह है कि मैं बहुत तरह संदर्भित कर सकते हैं वापस आ जाएगी:
user.id // property of the "User" model
user.reset() // method on the "User" model
user.AuthSource.id // property of the "AuthSource" model
user.AuthSource.authenticate(password) // method on the "AuthSource" model
अब, मेरे "AuthSource.authenticate" विधि के भीतर, मैं "उपयोगकर्ता" ऑब्जेक्ट के बारे में जानना चाहता हूं जिसमें मैं निहित हूं। अन्यथा, मैं इस तरह फ़ंक्शन को कॉल करने के लिए खत्म हो जाएगा, बजाय:
user.AuthSource.authenticate(user, password) // note the redundancy in the use of "user"
मैं तथ्य यह है कि मैं उपयोगकर्ता वस्तु के माध्यम से AuthSource मॉडल पर विधि फोन कर रहा हूँ और वास्तव में पढ़ा पर भरोसा करने में सक्षम होना चाहिए उस वस्तु से उस विधि से।
शानदार सवाल। मुझे आश्चर्य है कि क्या जावा के पास इस तरह की चीज को निर्धारित करने के लिए कुछ आत्मनिरीक्षण कार्य हो सकते हैं। शायद आप एक जावा टैग जोड़कर अपना प्रश्न बढ़ा सकते हैं। – Micah
इस सवाल पर यादृच्छिक डाउनवोट क्यों? कितना अजीब .... –