ColdFusion中的可变范围

时间:2018-03-09 08:35:38

标签: coldfusion coldfusion-9

我正在研究ColdFusion范围,但我不确定我的语法是否正确。

<cfset variable.siteID = #api.get('siteLookup').getsiteid(busid = 
request.businessid, orgid = org, location = Loc)#>

在上面这一行中,我已经转换为API调用,并且我已将其作为变量作为变量。它是否正确?变量是否是有效的ColdFusion范围?

2 个答案:

答案 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