成员变量的 PHP 大括号语法

2022-08-30 08:18:22

关于SO的第一个问题,这是一个真正的RTM候选人。但我向你保证,我看过,似乎找不到它。我很乐意做一个#headpalm,当它被证明是一件我错过的简单事情时。

试图弄清楚Zend框架,并遇到了以下语法:

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

我从未见过用于访问看似成员变量的大括号语法。它与

$this->_session->user_id

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

大括号是否只是一种清洁约定,它试图将复合变量名称包装user_id?还是某种特殊的访问器?

任何指向TFM的指针,以便我可以R起来,将不胜感激。

非常感谢。请保持温柔。


答案 1

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

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


答案 2

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

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

推荐