首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cfc中的var作用域和模块调用

cfc中的var作用域和模块调用
EN

Stack Overflow用户
提问于 2015-02-20 22:49:30
回答 1查看 159关注 0票数 2

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

代码语言:javascript
复制
<!--- 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作用域?

考虑到我不能轻易地复制来自不同请求的多个同时调用,考虑到实际应用程序可能会遇到的情况,我测试这种溢出的最佳方式是什么,以便我可以“自己看到它”?

谢谢你的见解。

EN

回答 1

Stack Overflow用户

发布于 2015-02-20 23:12:20

好的,显然这并不像我想的那样难以测试(感谢David Faber的建议)。通过在cfc中转储变量作用域,我们可以很容易地看到cfmodule调用是否“污染”了cfc的变量作用域。当cfmodule使用它自己的caller作用域时,就会发生这种情况。

事实证明,这很容易在调用cfmodule之前通过"var作用域“确定方法中任何有问题的变量的作用域来解决。实际上,这样做可以防止cfmodule变量大量溢出。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28631755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档