ColdFusion 中的 THIS 范围和 APPLICATION 范围有啥区别?

Posted

技术标签:

【中文标题】ColdFusion 中的 THIS 范围和 APPLICATION 范围有啥区别?【英文标题】:What is the difference between THIS scope and APPLICATION scope in ColdFusion?ColdFusion 中的 THIS 范围和 APPLICATION 范围有什么区别? 【发布时间】:2014-02-25 06:19:58 【问题描述】:

今天我正在阅读博客Difference between THIS and APPLICATION scope。什么解释了他们的理解,之后我在这个范围内的 Application.cfc 中声明了一个变量,我可以在我的所有页面中访问该变量。所以我的问题是我们可以使用这个范围来声明应用程序级变量吗?或者 THIS 和 APPLICATION 范围的变量之间是否还有区别。 例子: 应用程序.cfc

<cfset THIS.testVar1 = 50>
<cfset APPLICATION.testVar1 = 100>

索引.cfm

<cfdump var="#THIS.testVar1#"> O/P: 50
<cfdump var="#APPLICATION.testVar2#"> O/P: 100

所以这让我认为这两个范围是相似的。请让我知道这些范围之间是否存在更多差异。

【问题讨论】:

当您在 Application.cfc 中使用 THIS 范围设置变量时,您实际上并没有将其存储在 Application 范围中。该代码将在每个页面请求上得到处理。 @ScottStroz:处理后的意思是什么? 如果你在伪构造函数中有&lt;cfset this.stuff = 'moo' /&gt; 之类的东西,那么该行代码会随每个页面请求一起执行。但是,如果您以正确的方式设置应用程序范围变量(例如在onApplictionStart() 中还有其他方式,但这很常见),它只会在您启动应用程序时运行,或者如果您的应用程序中有逻辑重新初始化应用程序。 【参考方案1】:

Application.cfc 中的This 范围用于设置cf 应用程序设置,应使用cf10 中的https://wikidocs.adobe.com/wiki/display/coldfusionen/GetApplicationMetadata 读取。

This普通cfc的作用域是存储公共函数和公共属性。

Application 范围用于存储和获取数据片段,通常是应用程序配置和单例实例。它会一直持续到 cf 应用程序超时、停止或服务器重新启动。

【讨论】:

以上是关于ColdFusion 中的 THIS 范围和 APPLICATION 范围有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

“范围:”http 标头导致 ColdFusion 应用程序挂起

Coldfusion 中的多步骤表单都有哪些最佳实践?

如何在ColdFusion中获取POST数据

在 ColdFusion UDF 中,有没有办法从父函数范围引用变量?

Coldfusion 和非作用域变量

ColdFusion无法读取Ajax发送的FormData