如何将UDF库放入APPLICATION范围?

时间:2011-11-30 14:33:13

标签: coldfusion coldfusion-9 application.cfc

我正在使用ColdFusion 9.0.1。

现在,我们将我们的UDF库包含在application.cfc中的onRequest()方法中。以下是我们如何包含它:

<cfscript>
    // INCLUDE LIBRARY
    include "udf/udf_library.cfm";
</cfscript>

我想知道是否有办法将整个库放入APPLICATION范围,以便只创建一次。我们是否会像将order.cfc放入APPLICATION范围一样这样做:

APPLICATION.AppInfo.objOrders = createObject("component", "globaladmin.orders");

是否应将UDF库转换为CFC以实现此目的?

我们如何在CFC中引用该功能?

目前我们没有大惊小怪地调用UDF函数,如下所示:

<cfscript>
   createButton("Canada Postal Codes", "ShowSection", "ShippingCanadaPostalCodes");
   wrapCell(Buttons);
   wrapRow(Cells, "TableSubHead"));
</cfscript>

在每个函数之前添加“APPLICTION.AppInfo”会非常难看。

那么,将UDF库移动到APPLICATION范围或仅在其他地方加载一次会有什么好处吗?

1 个答案:

答案 0 :(得分:1)

我认为确定您的UDF范围是一个好主意。因为它只是将它们作为REQUEST范围的一部分,所以如果在应用程序的其他部分的.cfm页面中声明了相同名称的方法,则存在名称冲突的空间。

如果您确实在APPLICATION范围中添加它们和对象,例如在onApplicationSart()中,那么您必须了解线程安全问题。据推测,您的UDF是相当自包含的,因此您的APPLICATION范围对象将不会保持任何内部状态,因此您在这方面应该足够安全。

如果您只想创建一次,那么将您的函数添加到CFC并在Application.cfc的onApplicationStart()函数中创建它,如上所述分配给APPLICATION范围。

是否应将UDF库转换为CFC以实现此目的?

我们如何在CFC中引用该功能?

APPLICATION.AppInfo.yourObj.createButton("Canada Postal Codes", "ShowSection", "ShippingCanadaPostalCodes")