成员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)?