Tom*_*ard 3 coldfusion application.cfc
我们正在运行ColdFusion MX7.
我们遇到的一个问题是我们在很多页面中都使用了很多函数.让它们生活在'Global'ColdFusion范围中,而不是必须将它们包含在我们的所有页面中,这将是很好的.
有没有办法做到这一点,不涉及自定义标签等?
我知道我们可以将一些对象附加到Application或Server范围,但是我们必须这样引用它们.
简单地将它们添加到全球范围将是完美的.
编辑
感谢这些建议,这就是我提出的建议.基本上,对于OnRequestStart函数中的每个请求,在客户端作用域中为函数引用(this.functionName)分配一个正确命名的变量.
的Application.cfc:
<cfcomponent OUTPUT="FALSE">
<cfset This.name = "MyApp">
<CFSET This.clientManagement = true>
<CFSET This.SessionManagement = true>
<CFFUNCTION NAME="Coalesce" OUTPUT="FALSE" access="public">
<CFARGUMENT NAME="ARG1">
<CFARGUMENT NAME="ARG2">
<CFIF ARG1 NEQ "">
<CFRETURN ARG1>
<CFELSE>
<CFRETURN ARG2>
</CFIF>
</CFFUNCTION>
<cffunction name="onRequestStart">
<CFSET CLIENT.COALESCE = this.COALESCE>
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
此应用程序下的页面愉快地响应呼叫:
<CFOUTPUT>#COALESCE("ONE","TWO")#</CFOUTPUT>
Run Code Online (Sandbox Code Playgroud)
效果很好!
没有"全球范围"这样的东西.
如果您在每个页面中讨论变量范围,可以尝试在Application.cfm中包含UDF.
如果您使用Application.cfc,请在CF7 doc中查找onRequest().