哪个是正确的使用范围?

时间:2012-03-01 02:07:30

标签: coldfusion scope

我正在使用ColdFusion 9.0.1

我正在运行一个包含其他页面的页面。此页面的主要目的是确定要包含的页面。将包含的页面将使用我在页面中使用的变量,该变量将是MovieID(在本例中)。

我的问题是哪个是此页面上使用的最佳范围?它是VARIABLES吗?

<cfscript>
Lookup = CGI.QUERY_STRING;
Query = CFC.doLookup(Lookup);
if (Query.RecordCount == 0) {
    include "Content/Home.cfm";
} else {
    // MOVIE PAGE
MovieID = Query.MovieID; // WHAT SCOPE SHOULD I USE HERE? FOR MOVIEID?
include "Content/Movie.cfm";
}
</cfscript>

3 个答案:

答案 0 :(得分:3)

Variables(这就是你现在拥有的)当然有效。另一个合理的选择是Request,但我倾向于variables而不是request

答案 1 :(得分:3)

是: 变量

<强>也许: 应用程序,Cookie,请求,服务器,会话

否: 参数,属性,来电者,CGI,客户端,Flash,表格,本地,这 ThisTag,Thread,thread local,URL

有关每个范围的信息,请查看CF9文档:scope types

听起来你正在实施Front Controller pattern

使用运行代码段的onRequest()实现Application.cfc。这样,它将拦截所有传入的请求并包含适当的cfm。不需要处理程序index.cfm,它只包含其他cfm模板。

进一步优化。让doLookup()方法返回一个只包含recordCount + movieId的Struct,因为它显示的就是您正在使用的所有内容。返回整个查询比只有两个数字的结构要慢。

CF9文件:Application.cfc

答案 2 :(得分:2)

虽然Variables范围或Request范围可用于所包含的网页,但使用Request范围可能会有所帮助,因为它是适用于任何范围的范围请求中的文件,而Variables范围通常被认为是特定于给定页面。

事实上,Request范围最初是为Allaire Spectra引入的,目的是在自定义标签之间共享变量。

所以,虽然两者都会做你想做的事情,但我会说Request范围可能只有一点点优势来澄清意图。