PHP成员变量的大括号语法

关于SO的第一个问题,它是一个真正的RTM候选人。 但我向你保证我看起来似乎无法找到它。 如果事实证明我错过了一件简单的事情,我会很乐意做一个#headpalm。

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

$this->_session->{'user_id'}

我从来没有见过花括号语法来访问看起来是一个成员变量。 它和它有什么不同

$this->_session->user_id

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

花括号只是一个试图包装复合变量名称user_id的清洁约定? 或者它是某种特殊的访问者?

任何指向TFM的指针都会被虚心地赞赏。

非常感谢。 请温柔。


大括号用于明确指定变量名称的结尾。 例如:

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手册,“复杂(卷曲)语法”。


我知道使用变量变量时的语法:

$userProp = 'id';
$this->_session->{'user_'.$userProp};

Theres可能是该语法的一大优点,但是,它通常在毛茸茸的东西领域,以及您可能想要避免的事情。

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

即:

$this->object->{"hello worldn"} 
$this->object->{"function(){   this is a truely awful  name for a variable }"} 
链接地址: http://www.djcxy.com/p/10191.html

上一篇: PHP curly brace syntax for member variable

下一篇: PHP Comments # vs //