Dav*_*aub 79 php variables syntax curly-braces
关于SO的第一个问题,它是一个真正的RTM候选者.但我保证你看起来似乎无法找到它.我很乐意做一个#headpalm,结果证明这是一个我错过的简单事情.
试图弄清楚Zend Framework并遇到以下语法:
$this->_session->{'user_id'}
Run Code Online (Sandbox Code Playgroud)
我从未见过用于访问看似成员变量的花括号语法.它有什么不同
$this->_session->user_id
Run Code Online (Sandbox Code Playgroud)
我假设_session是无关紧要的,但将其包括在问题中,因为它可能不是.
花括号只是一个清洁度约定,试图包装复合变量名称user_id吗?或者它是某种特殊的访问者?
任何指向TFM的指针都可以让我感到谦卑.
非常感谢.请温柔.
Jam*_*ore 51
大括号用于显式指定变量名称的结尾.例如:
echo "This square is {$square->width}00 centimeters broad.";
Run Code Online (Sandbox Code Playgroud)
所以,你的案例实际上是两个特例的组合.您可以使用花括号访问类变量,如下所示:
$class->{'variable_name'} // Same as $class->variable_name
$class->{'variable' . '_name'} // Dynamic values are also allowed
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你只是用大括号语法围绕它们.
请参阅PHP手册 "复杂(卷曲)语法".
Gum*_*mbo 23
我在使用变量变量时就知道了语法:
$userProp = 'id';
$this->_session->{'user_'.$userProp};
Run Code Online (Sandbox Code Playgroud)
Ken*_*ric 19
这可能是该语法的一大优势,但它通常在毛茸茸的东西领域,以及你可能想要避免的东西.
它允许您使用变量名中的字符,否则这些字符是不允许的.
即:
$this->object->{"hello world\0\n"}
$this->object->{"function(){ this is a truely awful name for a variable }"}
Run Code Online (Sandbox Code Playgroud)
Don*_*oer 11
你问题中的两个例子做同样的事情.PHP允许您以多种方式访问成员数据/方法......
object->{'name_of_member'};
object->name_of_member;
$member = 'name_of_member';
object->$member;
Run Code Online (Sandbox Code Playgroud)
cha*_*aos 11
在你给出的例子中,没有真正的区别,$this->_session->user_id应该使用IMO,因为它更清晰.
大括号语法实际上有用的是通过为其名称构造表达式来访问成员变量,例如$this->_session->{'user_id' . $index}.
| 归档时间: |
|
| 查看次数: |
34687 次 |
| 最近记录: |