人群的问题。我们的团队非常严格地在CFC中的函数内部定义局部变量。最近虽然在Application.cfc中确定了变量范围的问题。像onRequestStart()这样的函数中的未映射变量是否存在被同时运行的其他会话访问的相同风险,因为我们知道其他组件中的函数中的局部变量是?或者由于Application.cfc中函数的性质,它们在某种程度上被区别对待?
答案 0 :(得分:12)
您的问题与两个完全不同的问题相关(这两个问题都很重要,需要澄清和解决)。这两个问题是:
对此的简短回答是:是。它使代码更清晰,更易读/可管理,并防止在以后重新使用变量名时可能遇到的变量范围冲突。
如果您创建了APPLICATION.settings和SESSION.settings,但尝试在没有范围的情况下引用它们(即。<cfset myvar = settings />
),那么您将会遇到变量冲突问题,因为它们会被转换为VARIABLES默认情况下 - 因为APPLICATION和SESSION都不会被检查以解决范围歧义。
第二个问题是:
对此的简短回答是:是。你应该知道&amp;了解共享变量访问方式的后果,并在适当的时候<CFLOCK>
。
不幸的是,确切地说,锁定共享变量的时间和位置通常都不会向CF社区说明,所以让我总结一下: