coldfusion - cfc 中的 var 作用域和模块调用

标签 coldfusion coldfusion-10

如果我在 CFC 中有一个方法需要通过模块调用调用一些遗留代码(以执行一些关键功能),我是否面临变量“出血”的风险?例如:

<!--- in my cfc --->
<cffunction name="myFunc"> 

   <cfset var qData = "">
   <cfmodule template="some_legacy_code.cfm" attr1="hi" attr2="hello">
   <cfreturn qData>

</cffunction>


<!--- in some_legacy_code.cfm --->
<cfquery name="qData">
     select * from x
</cfquery>

<cfset caller.qData = qData>

在本例中使用 caller.qData 是否会污染调用 CFC 的变量范围,即使我已经对 qData 进行了 var 作用域?

考虑到我无法像真实应用程序可能遇到的那样轻松地复制来自不同请求的多个同时调用,测试这种出血的最佳方法是什么?

感谢您的见解。

最佳答案

好吧,显然这并不像我想象的那么难测试(感谢 David Faber 的建议)。通过转储 cfc 中的变量范围,我们可以轻松查看 cfmodule 是否call 正在“污染” cfc 的变量范围。当 cfmodule 使用自己的 caller 时,会发生这种情况范围。

事实证明,在调用 cfmodule 之前,可以通过“var 范围”确定方法中任何有问题的变量来轻松解决此问题。事实上,这确实可以防止 cfmodule流淌的变量。

如果方法中没有 var 作用域变量,则确实会发生溢出(如预期)。这是我的直觉,但考虑到其影响,我想完全确定。谢谢!

关于coldfusion - cfc 中的 var 作用域和模块调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28631755/

相关文章:

.net - 将 IEnumerable 变量从 ColdFusion 传递到 .NET

html - 如何以编程方式在 ColdFusion 中包含页眉和页脚文件?

apache - 如何从 metrics.log 值配置 Web 连接器

coldfusion - 使用 REFind 查找字符串中的多次出现

javascript - ColdFusion Layout, CFlayout, 无法切换到父标签

java - 如何在 ColdFusion 中访问 Java Enum?

java - 使用 OpenMap API 我应该使用哪个类从 shapefile 中提取点数据?

excel - cfspreadsheet 能否在不将它们更改为空白的情况下从查询中输出空值?

ColdFusion 包括

coldfusion - 是否有 cfscript 支持使用 group 属性循环查询