在ColdFusion中存储常用功能的位置

时间:2009-06-25 20:16:57

标签: 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>

此应用程序下的页面愉快地响应了呼叫:

<CFOUTPUT>#COALESCE("ONE","TWO")#</CFOUTPUT>

效果很好!

3 个答案:

答案 0 :(得分:6)

没有“全球范围”这样的东西。

如果您在每个页面中讨论变量范围,可以尝试在Application.cfm中包含UDF。

如果您使用Application.cfc,请在CF7文档中查找onRequest()。

答案 1 :(得分:2)

我满意的一个选项是在Application.cfc中创建服务(或类似命名的)组件。将所有函数添加到此组件,并在创建应用程序时创建它。这将改善加载时间,因为函数缓存在应用程序中,并且还使该函数可以访问该应用程序中的任何文件。当然,您需要调用application.services.myUsefulFunction()

之类的函数

答案 2 :(得分:2)

查看此类似帖子。它对我来说很有用......

How do you organize your small reusable functions