关于SO的第一个问题,它是一个真正的RTM候选人。但我向你保证,我已经找过了,但似乎找不到。当我发现这是一件我错过的简单的事情时,我会很高兴地做一个#headpalm。
试图找出Zend Framework,并遇到了以下语法:
$this->_session->{'user_id'}
我从未见过用于访问看起来像是成员变量的大括号语法。它有什么不同
$this->_session->user_id
我假设_session是无关紧要的,但将它包含在问题中,因为它可能不是。
大括号只是一个简洁的约定,试图包装复合变量名user_id吗?或者它是某种特殊的存取器?
对于TFM的任何建议,我都将不胜感激。
非常感谢。请温文点。
发布于 2009-07-18 16:23:22
大括号用于显式指定变量名的结尾。例如:
echo "This square is {$square->width}00 centimeters broad.";
所以,你的案例实际上是两种特殊情况的组合。你可以使用花括号来访问类变量,就像这样:
$class->{'variable_name'} // Same as $class->variable_name
$class->{'variable' . '_name'} // Dynamic values are also allowed
在您的示例中,您只需使用花括号语法将它们括起来。
请参阅PHP manual“复杂(卷曲)语法”。
发布于 2009-07-18 16:24:08
我只在使用variable variables时才知道其中的语法
$userProp = 'id';
$this->_session->{'user_'.$userProp};
发布于 2009-07-18 16:32:58
然而,这种语法可能有一个很大的优点,它通常是在复杂的东西和你可能想要避免的东西的领域。
它允许您在变量名中使用不允许的字符。
即:
$this->object->{"hello world\0\n"}
$this->object->{"function(){ this is a truely awful name for a variable }"}
https://stackoverflow.com/questions/1147937
复制相似问题