为了账号安全,请及时绑定邮箱和手机立即绑定

成员变量的PHP大括号语法

成员变量的PHP大括号语法

PHP
Smart猫小萌 2019-11-28 09:53:09
关于SO的第一个问题,它是真正的RTM候选人。但是我保证你已经看过了,但似乎找不到。当我发现错过了一件简单的事情时,我会很高兴地做一个#headpalm。试图弄清楚Zend Framework并遇到以下语法:$this->_session->{'user_id'}我从未见过用于访问似乎是成员变量的花括号语法。有什么不同$this->_session->user_id我假设_session无关紧要,但由于可能没有问题,因此将其包含在问题中。花括号只是试图包装复合变量名称user_id的清洁约定吗?还是某种特殊的访问器?任何对TFM的指点,以便我可以R表示赞赏。非常感谢。请保持温柔。
查看完整描述

3 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

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


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


查看完整回答
反对 回复 2019-11-28
?
呼唤远方

TA贡献1856条经验 获得超11个赞

但是,该语法可能有一个很大的优势,即它通常在多毛的东西领域以及您可能需要避免的事情。


它允许您在变量名中使用字符,否则不允许使用这些字符。


即:


$this->object->{"hello world\0\n"} 

$this->object->{"function(){   this is a truely awful  name for a variable }"} 


查看完整回答
反对 回复 2019-11-28
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

在您给出的示例中,没有任何实际区别,$this->_session->user_id应该使用IMO,因为它更清晰。


花括号语法实际上最适合的是通过为其名称构造表达式来访问成员变量,例如$this->_session->{'user_id' . $index}。


查看完整回答
反对 回复 2019-11-28
  • 3 回答
  • 0 关注
  • 328 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信