मैं एक और तरीका है कि काम कर सकता था के बारे में सोचा।
सेटअप इस तरह एक OnMissingMethod कुछ:
<cffunction name="onMissingMethod">
<cfargument name="missingMethodName" type="string">
<cfargument name="missingMethodNameArguments" type="struct">
<cfset var tmpReturn = "">
<cfset var functionToCallName = "Hidden" & Arguments.missingMethodName>
<cfset arguments.missingMethodArguments.calledMethodName = Arguments.missingMethodName>
<cfinvoke method="#functionToCallName#" argumentcollection="#Arguments.missingMethodArguments#" returnvariable="tmpReturn" />
<cfreturn tmpReturn>
</cffunction>
फिर एक उपसर्ग ("छुपे हुए" इस उदाहरण में) के साथ नियमित रूप से तरीकों में से प्रत्येक के नाम, और उन्हें निजी के रूप में चिह्नित करें। तो मेरी प्रारंभिक उदाहरण बन जाएगा:
<cffunction name="HiddenisUsernameAvailable" access="private">
<cfset logAccess(request.userid,Arguments.calledMethodName)>
......
</cffunction>
अब सभी कॉल्स onMissingMethod, जो तर्क है कि वास्तविक विधि के लिए पारित करने के लिए विधि नाम जोड़ देगा द्वारा रोक दिया जाएगा।
डाउनसाइड्स मैं इसे देखता हूं कि आत्मनिरीक्षण अब ठीक से काम नहीं करता है, और आपको अपने सभी कार्यों को कॉल करने के लिए नामांकित तर्कों का उपयोग करना होगा। यदि आप नामित तर्कों का उपयोग नहीं कर रहे हैं, तो तर्क यादृच्छिक रूप से missingMethodNameArguments संरचना में ऑर्डर बदल देंगे।
स्रोत
2009-02-22 19:28:16
सर्दी पर अच्छा कॉल, लेकिन आपको लगता है कि यह जटिल नहीं होगा। – ethyreal