如何在CFML中引用全局函数库?

时间:2012-11-02 21:52:39

标签: frameworks coldfusion railo cfml code-structure

依赖注入允许您避免直接引用对象外部的对象和作用域。您改为引用注入的依赖项。

我想知道全局函数库的最佳实践。我目前将我的功能存储在服务器范围内。我希望我的项目很快就能成为开源的,并且其他开发人员也很容易理解。我希望应用程序更容易编写单元测试,并且更松散地耦合。

我应该将服务器范围注入到使用全局函数的每个对象中吗?

或者我应该对规则进行例外处理,并在引用这些函数时将“server.functions.myFunction()”范围直接放在组件中?

以下是代码示例:

方法1:

<cfcomponent>
    <cffunction name="init">
        <cfscript>
           server.functions.myFunction();
        </cfscript>
    </cffunction>
</cfcomponent>

方法2:

<cfcomponent>
    <cffunction name="init">
        <cfargument name="serverScope" type="struct" required="yes">
        <cfscript>
            variables.serverScope=arguments.serverScope;
            variables.serverScope.functions.myFunction();
        </cfscript>
    </cffunction>
</cfcomponent>

1 个答案:

答案 0 :(得分:1)

我从来没有把我的答案正式化。根据你在评论中所说的话,我会这样做:

  • 将您的全局库分解为更多特定于目的的组件,然后将其视为对象(有状态),或者 - 用于所有意图和目的静态库(非有状态)。
  • 是的,使用依赖注入为特定情况注入只需要

我不会为了方便而打破封装。