1

我正在使用 ColdFusion 9.0.1。

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

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

我想知道是否有办法将整个库放入 APPLICATION 范围内,以便只创建一次。我们是否会像将 orders.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 范围或仅在其他地方加载一次是否有任何优势?

4

1 回答 1

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")
于 2011-11-30T15:55:48.273 回答