如何将DSN传递给cfcomponent数据源属性

时间:2014-04-29 03:43:22

标签: coldfusion railo

将应用程序范围的DSN值传递给组件的最佳做法是什么?是这样的吗?

component datasource="#application.dsn#"

我一直认为在组件中使用应用程序范围的变量不是一个好习惯。这会更好吗?

component{
    function init( dsn, arg1, arg2 ){
          this.datasource = arguments.dsn;
   }
}

2 个答案:

答案 0 :(得分:6)

最佳做法是使组件完全隔离,不要了解外部世界(包括组件外部的任何变量,例如应用程序范围)。您应该通过参数传递组件需要满足其预期目的的任何数据。因此,基于该前提,您的第二个代码示例是首选方法。

答案 1 :(得分:0)

@cfvonner已经详细回复,我相信是正确的答案。 ColdFusion大多数时候允许你按照自己的意愿做事,使用DSN作为会话,应用程序,请求,硬编码。但这种灵活性不应成为编写糟糕代码的借口。当问题本身为“良好实践”而努力时,除了@Adam Cameron提出的观点之外,你的第二段代码也是正确的。简而言之,OOPs ---> ENCAPSULATION --->传递参数