首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cfdump组件方法值,而不是组件结构

Cfdump组件方法值,而不是组件结构
EN

Stack Overflow用户
提问于 2013-03-25 12:03:02
回答 3查看 899关注 0票数 2

我最近开始使用一个cfc组件在Session变量中存储用户信息。我过去常常将它们作为单独的变量存储在会话中,比如Session.UserId、Session.Firstname或Session.Lastname。这个新组件很好地将所有这些都封装到一个组件中,其中包含我需要的每个值的get方法(即Session.User.getUserId()、Session.User.GetName()等)。

但是,当我执行会话变量的cfdump以进行调试时,它会显示对象结构的元数据。我想看看组件的get方法返回的值。有没有办法使用cfdump输出函数值和对象元数据?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-25 12:53:17

有没有使用cfdump输出函数值和对象元数据的方法?

是的,使用访问器。

代码语言:javascript
复制
<cfcomponent accessors="true">
    <cfproperty name="userID">
    <cfproperty name="firstName">
    <cfproperty name="lastName">
</cfcomponent>

尝试<cfdump>此对象,您将看到属性值。

票数 3
EN

Stack Overflow用户

发布于 2013-03-25 12:18:00

<cfdump>不是魔术,它所做的只是输出你给它的值。由于您的CFC实例没有公开任何反映这些值的公共属性,因此<cfdump>无法知道它们是什么。

如果您需要一次性提取反映以前会话作用域的所有私有属性,那么您需要创建一个方法来执行此操作,然后<cfdump>该方法。例如:

代码语言:javascript
复制
public struct function getVariables(){
    return  variables;
}

如果你想进一步抽象你想要的值,比如variables.sessionStuff (variables.sessionStuff.userIdvariables.sessionStuff.name等),那么编写一个返回variables.sessionStuff的方法getSessionStuff()

票数 5
EN

Stack Overflow用户

发布于 2013-03-26 17:54:29

不确定Adobe是否继续支持这一点,但在ColdFusion 8中,THIS作用域中的任何变量都自动被认为是公共的(因此在cfdump中可见),而显式使用VARIABLES作用域则被认为是私有的(因此在cfdump中不可见)。这样,当您在组件中保留组件引用时,还可以避免堆栈溢出(cfdump用于递归地解决它们,并以无限循环结束)。但话又说回来:这可能是在ColdFusion 9和更高版本中修复的。

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

https://stackoverflow.com/questions/15607436

复制
相关文章

相似问题

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