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:处理后的意思是什么?
如果你在伪构造函数中有<cfset this.stuff = 'moo' />
之类的东西,那么该行代码会随每个页面请求一起执行。但是,如果您以正确的方式设置应用程序范围变量(例如在onApplictionStart()
中还有其他方式,但这很常见),它只会在您启动应用程序时运行,或者如果您的应用程序中有逻辑重新初始化应用程序。
【参考方案1】:
Application.cfc 中的This
范围用于设置cf 应用程序设置,应使用cf10 中的https://wikidocs.adobe.com/wiki/display/coldfusionen/GetApplicationMetadata 读取。
This
普通cfc的作用域是存储公共函数和公共属性。
Application
范围用于存储和获取数据片段,通常是应用程序配置和单例实例。它会一直持续到 cf 应用程序超时、停止或服务器重新启动。
【讨论】:
以上是关于ColdFusion 中的 THIS 范围和 APPLICATION 范围有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
“范围:”http 标头导致 ColdFusion 应用程序挂起