1

我通常在 Application.cfc 的第一行中设置应用程序范围的数据源名称:

<cfscript>THIS.datasource="mydsn";</cfscript>

如果我需要在代码的某些部分更改它怎么办?

具体来说,我的意思是:

  • 如果 cgi.server_name 等于 "www.firsturl.com" => this.datasource = "firstdsn"
  • 如果 cgi.server_name 等于 "www.secondurl.com" => this.datasource = "seconddsn"

我可以为每个请求都这样做吗?

4

1 回答 1

5

好的,尽管我对您的原始帖子发表了评论-找出这些事情的最佳方法就是尝试一下,看看会发生什么,答案是:是的。

Application.cfc 的名字很糟糕,因为它暗示它是一种特定于应用程序的,但实际上整个事物都是在每个请求时实例化的。一些事件处理程序只在给定的情况下运行(onApplicationStart / onSessionStart 等)既不存在也不存在:整个事情运行每个请求。因此,与任何被实例化的 CFC 一样,伪构造函数代码(在其中进行 this 范围的变量声明)也会在每个请求中运行。

这意味着是的,您可以根据特定于请求的信息(请求、CGI、URL、表格等;但不是应用程序或会话)有条件地设置任何这些变量。因此,您基于 CGI 变量的条件可以正常工作。

但不要相信我的话:试试吧!总是尝试这些事情。

最后,为了稍微插嘴一下,我会在我的博客这篇文章中深入讨论什么时候在 Application.cfc 中运行。也许可以阅读一下,或者在您在那里的时候查看 Application.cfc 上的其他文章。

于 2012-09-19T13:48:19.757 回答