成员variables的PHP大括号语法
关于SO的第一个问题,这是一个真正的RTM候选人。 但是我向你保证,我看起来似乎无法find它。 我会很乐意做一个#headpalm,事实certificate是一个简单的事情,我错过了。
试图找出Zend框架,并遇到以下语法:
$this->_session->{'user_id'} 我从来没有见过花括号语法来访问看起来是一个成员variables。 它和它有什么不同?
 $this->_session->user_id 
我假定这次会议是无关紧要的,但是把它包括在问题中,因为它可能不是。
花括号是否只是一个清洁约定,试图包装复合variables名称user_id? 或者它是一种特殊的访问者?
任何指向TFM的指针,所以我可以R谦虚表示赞赏。
非常感谢。 请温柔。
花括号用于明确指定variables名的结尾。 例如:
 echo "This square is {$square->width}00 centimeters broad."; 
所以,你的情况实际上是两种特殊情况的组合。 您可以使用花括号来访问类variables,如下所示:
 $class->{'variable_name'} // Same as $class->variable_name $class->{'variable' . '_name'} // Dynamic values are also allowed 
在你的情况下,你只是用大括号语法来包围它们。
请参阅PHP手册 ,“复杂(curl)语法”。
我知道使用variablesvariables时的语法:
 $userProp = 'id'; $this->_session->{'user_'.$userProp}; 
Theres可能是这个语法的一个很大的优势,但是,它通常在毛茸茸的东西领域,以及你可能想要避免的事情。
它允许您在variables名中使用不允许的字符。
即:
 $this->object->{"hello world\0\n"} $this->object->{"function(){ this is a truely awful name for a variable }"} 
 在你给的例子中,没有真正的区别,应该使用IMO $this->_session->user_id因为它更清晰。 
 什么花括号语法实际上是好的访问一个成员variables通过构build一个名称的expression式,如$this->_session->{'user_id' . $index}  $this->_session->{'user_id' . $index} 。 
在你的问题中的两个例子做同样的事情。 PHP允许您以多种方式访问成员数据/方法…
 object->{'name_of_member'}; object->name_of_member; $member = 'name_of_member'; object->$member; 
- 没有types为“IEnumerable <SelectListItem>”的ViewData项具有键“xxx”
- 如何从子查询中select多个列(在SQL Server中),对于主查询中的每个logging应该有一个logging(selecttop 1)?