myślałem o inny sposób, który mógłby działać.
Konfiguracja coś OnMissingMethod tak:
<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>
Następnie wymienić każdego z regularnych metod z prefiksem („ukryte” w tym przykładzie), oraz oznaczyć je jako prywatne. Więc moja początkowa Przykładem może stać się:
<cffunction name="HiddenisUsernameAvailable" access="private">
<cfset logAccess(request.userid,Arguments.calledMethodName)>
......
</cffunction>
Teraz wszystkie połączenia zostaną przechwycone przez onMissingMethod, która doda nazwę metody do argumentów, które przejdzie do prawdziwej metody.
Wady, jakie widzę, to to, że introspekcja nie działa poprawnie, a do wywoływania wszystkich funkcji trzeba używać nazwanych argumentów. Jeśli nie używasz nazwanych argumentów, argumenty będą losowo zmieniać kolejność w strukturze missingMethodNameArguments.
dobre połączenie w zimny okres, ale można by pomyśleć, że nie byłoby to tak skomplikowane. – ethyreal