来自不同目录的Coldfusion CreateObject

时间:2015-09-16 21:51:35

标签: coldfusion cfml cfc

我的目录结构:

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

  2. Com.Lib.search(所有搜索cfcs)

  3. Com.Lib.utils(All utils cfcs)

  4. 如果我正在从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");
    

1 个答案:

答案 0 :(得分:3)

为了说明组件的相对路径查找,这里有一个例子:

您的网络应用程序就像:

/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