我正在研究ColdFusion范围,但我不确定我的语法是否正确。
<cfset variable.siteID = #api.get('siteLookup').getsiteid(busid =
request.businessid, orgid = org, location = Loc)#>
在上面这一行中,我已经转换为API调用,并且我已将其作为变量作为变量。它是否正确?变量是否是有效的ColdFusion范围?
答案 0 :(得分:5)
范围实际上是variables
(带有&#39; s&#39;)。这是ColdFusion中的默认范围。来自Learn CF in a Week - Scopes:
下表显示了正在运行的ColdFusion应用程序中可用的主要范围:
变量:ColdFusion模板中提供的默认范围。变量仅在执行模板期间可用。
URL :查询字符串中的所有变量或通过HTTP GET请求发送到ColdFusion的变量都可在URL范围内使用。 URL变量可用于当前请求。
表单:表单范围中提供了从表单发布的所有变量(HTTP POST)。表单变量可用于当前请求。
CGI :从浏览器发送的CGI变量放入CGI范围。 CGI变量可用于当前请求。
查询(不是真正的范围):执行查询后,结果集将放入由运算符赋值或cfquery标记的name属性指定的命名范围中。存储在该指针中的数据可用于当前请求。
服务器:开发人员可以选择利用服务器范围在当前ColdFusion实例或群集的上下文中运行的应用程序之间共享数据。此范围在请求之间保持不变,并且在服务器关闭之前可用。
应用程序:应用程序变量在当前指定应用程序的所有连接客户端之间共享。此范围也用于使用单例模式实例化的对象。此范围适用于应用程序生命周期的请求,可能会在服务器关闭,应用程序故障或应用程序超时时终止。
会话:开发人员使用会话变量在请求中存储单个访问者的数据。此范围仅适用于当前会话,并将持续到服务器或应用程序终止或会话超时。
请求:请求范围包含可用于在当前请求的上下文中执行的所有函数,CFC,模板和自定义标记的数据。此范围中的数据在当前请求期间可用。
参数:参数范围包含传递到ColdFusion函数的数据。参数范围与本地函数范围互斥,并且可能不包含与本地范围相同的变量名称。此范围在当前函数执行期间可用,并且对当前函数上下文是私有的。
属性:此范围包含作为属性传递给ColdFusion自定义标记的变量。此范围中的数据在自定义标记的执行生命周期内可用。有关自定义标记可用的其他范围,以及如何在嵌套自定义标记中处理范围,请参阅ColdFusion Livedocs。
本地(函数):可以显式引用Local范围,也可以使用var关键字定义。此范围中的变量对当前函数上下文是私有的。此范围与参数范围互斥,并且可能不包含与参数范围相同的变量名称。
注意:以上列表并非包罗万象。有关其他和标记特定范围,请参阅Adobe Livedocs文档。
有关如何在引用的链接中引用这些范围的更多信息。
答案 1 :(得分:0)
您的代码从语法角度来看是有效的,但 variable
不是内置的ColdFusion范围。
我想你想要这个:
<cfset variables.siteID = ...
(观察最后的s
)
相当于:
<cfset siteID = ...
将在内置的ColdFusion siteID
范围内创建名为variables
的变量。
我的观点是,<cfset variable.siteID = ...
或者是错误,或者将来会为您或其他开发者造成混淆。
如果您尝试设置变量以便稍后在模板中使用,我建议在创建时仅使用变量的名称<cfset siteID = ...
而不使用前缀(范围)。
如果您尝试使用密钥siteID
创建结构,我建议使用其他更具描述性的内容来命名结构,而不是variable
。