来自不同目录的 Coldfusion CreateObject

Coldfusion CreateObject from different directory

我的目录结构:

  1. Com.Lib.db(所有数据库 cfc)

  2. Com.Lib.search(全部搜索cfcs)

  3. Com.Lib.utils(所有实用程序 cfcs)

如果我从 webroot 目录创建 (db) 目录的普通对象。

示例:

Createobject("component", "Com.Lib.db.mycfcA");

如果我在 (db) 目录中创建对象

示例: Createobject("component", "mycfcA");

这是正常情况。就我而言,我想创建一个从 db 目录到 Utils OR Search 的对象。例如,当我尝试提供完整路径时: 如果我在 db 目录中,试图在 (Utils) 目录中创建 myUtils.cfc 的对象。

Createobject("component", "Com.Lib.Utils. myUtils");

为了说明组件的相对寻路,这里举个例子:

您的 Web 应用程序如下:

/wwwroot/your-app/Application.cfc
/wwwroot/your-app/index.cfm
/wwwroot/your-app/images/example.jpg

您有一个虚拟主机 (www.your-app.com) 指向:

/wwwroot/your-app/

这是你的根。 ColdFusion 会将 / 物理解析为 /wwwroot/your-app/(默认根映射)。

调用如下组件:

createObject("component", "Com.Lib.Utils.myUtils")

现在将检查文件是否存在,即初始化组件:

/wwwroot/your-app/Com/Lib/Utils/myUtils.cfc

如果您的 CFC 不在此结构中,您需要为它们定义自定义映射。 自定义映射在 Application.cfc 的构造函数中定义。 因此,假设您的 CFC 位于以下目录中:

/wwwroot/my-cfcs/Com/Lib/Utils/

现在您可以为它们创建一个映射,例如:

<!--- Application.cfc --->
<cfcomponent>

    <cfset THIS.mappings["utils"] = "/wwwroot/my-cfcs/Com/Lib/Utils/">

</cfcomponent>

要调用组件,您现在可以像这样引用映射的组件路径:

createObject("component", "utils.myUtils")

这将检查文件是否存在,即初始化组件:

/wwwroot/my-cfcs/Com/Lib/Utils/myUtils.cfc