【发布时间】:2016-11-17 22:31:44
【问题描述】:
请随意重新命名这个问题,因为我不知道这样做的正确名称。更重要的是,我看到人们在访问对象内部的属性时使用{'property'},所以我设置了一个示例来尝试理解,但是当我使用该属性时可以访问该属性,而当我不使用该属性时?
class Example {
public $name;
}
$e = new Example();
$e->{'name'} = 'Kdot';
echo $e->name; // output: Kdot
我已尝试更改范围并通过类方法访问它,但它再次以两种方式工作。
谁能帮我理解使用 {} 分隔符的含义是什么?因为据我所知,如果您将参数存储在另一个变量中,这也可以:
$property = 'name';
echo $e->$property; // output: Kdot
【问题讨论】:
-
许多方法可以做同样的事情。就像在 JS 中一样,你可以做
window['onload']、window.onload和var name = onload; window[name] -
这只是最佳实践吗? @JuanMendes
-
使用
{'property'}表示法不是最佳实践,但如果它们有很多不是有效标识符的属性(例如{'%%property%%'}不会是一个有效的标识符,但如果以这种方式访问,则可以用作属性)。