我正在使用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范围或仅在其他地方加载一次会有什么好处吗?
答案 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")