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

How to initiate the multiple cfc with one object?

我有一个项目文件夹。项目文件夹里面有一个Application.cfc,一个index.cfm和一个cfc的文件夹:

/项目文件夹

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

如果任何 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 并通过用户会话携带它,您可能希望使用 Application.cfc 中的 onSessionStart() 创建该对象。您还可以在需要填充它并将其放入会话时创建它,而不是携带一个永远不会被使用的空版本。

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