如何用一个对象启动多个cfc?

时间:2016-06-22 20:42:50

标签: coldfusion cfc

我有一个项目文件夹。在项目文件夹中有一个Application.cfc,一个index.cfm和一个cfc'的文件夹:

/ ProjectFolder

  • --- Application.cfc
  • --- index.cfm
  • --- cfc(文件夹)
    • SomeComponent.cfc
    • OtherComponent.cfc
    • ...

cfc文件夹中,我有10个* .cfc文件。如何使用ColdFusion中的一个对象启动或映射10 * .cfc文件?

1 个答案:

答案 0 :(得分:2)

如果任何一个CFC只能创建一次,这意味着它们只执行调用存储过程,包含算法或其他业务逻辑,那么您可以简单地将这些CFC创建为application范围变量应用程序首先启动。

在此示例中,Application.cfc位于根文件夹中,CFC文件位于/cfc/文件夹中。

<cffunction name="onApplicationStart" returnType="boolean" output="false">
    <cfset application.stObject = {
            foo = new cfc.Foo()
            , bar = new cfc.Bar()
            , etc = new cfc.Etc()
        } />
    <cfreturn true />
</cffunction>

然后,在代码中的任何位置,您可以引用特定的CFC并在其中调用函数,如下所示:

<cfset qMyData = application.stObject.foo.getMyData() />

如果您需要使用数据填充CFC并通过用户的会话随身携带,您可能希望使用onSessionStart()中的Application.cfc创建该对象。您也可以在需要填充它并将其放入会话时创建它,而不是携带一个永远不会被使用的空版本。

最后,您可能只需要在页面请求的生命周期中根据需要创建某些CFC。这些将在variables范围内创建,并在请求期间的某个时间点填充,并在请求完成后删除。