首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >成员变量的PHP大括号语法

成员变量的PHP大括号语法
EN

Stack Overflow用户
提问于 2009-07-18 16:18:42
回答 5查看 36.5K关注 0票数 81

关于SO的第一个问题,它是一个真正的RTM候选人。但我向你保证,我已经找过了,但似乎找不到。当我发现这是一件我错过的简单的事情时,我会很高兴地做一个#headpalm。

试图找出Zend Framework,并遇到了以下语法:

代码语言:javascript
复制
$this->_session->{'user_id'}

我从未见过用于访问看起来像是成员变量的大括号语法。它有什么不同

代码语言:javascript
复制
$this->_session->user_id

我假设_session是无关紧要的,但将它包含在问题中,因为它可能不是。

大括号只是一个简洁的约定,试图包装复合变量名user_id吗?或者它是某种特殊的存取器?

对于TFM的任何建议,我都将不胜感激。

非常感谢。请温文点。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-07-18 16:23:22

大括号用于显式指定变量名的结尾。例如:

代码语言:javascript
复制
echo "This square is {$square->width}00 centimeters broad."; 

所以,你的案例实际上是两种特殊情况的组合。你可以使用花括号来访问类变量,就像这样:

代码语言:javascript
复制
$class->{'variable_name'} // Same as $class->variable_name
$class->{'variable' . '_name'} // Dynamic values are also allowed

在您的示例中,您只需使用花括号语法将它们括起来。

请参阅PHP manual“复杂(卷曲)语法”。

票数 54
EN

Stack Overflow用户

发布于 2009-07-18 16:24:08

我只在使用variable variables时才知道其中的语法

代码语言:javascript
复制
$userProp = 'id';
$this->_session->{'user_'.$userProp};
票数 24
EN

Stack Overflow用户

发布于 2009-07-18 16:32:58

然而,这种语法可能有一个很大的优点,它通常是在复杂的东西和你可能想要避免的东西的领域。

它允许您在变量名中使用不允许的字符。

即:

代码语言:javascript
复制
$this->object->{"hello world\0\n"} 
$this->object->{"function(){   this is a truely awful  name for a variable }"} 
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1147937

复制
相关文章

相似问题

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