我刚刚遇到这段代码:
// Assign initialized properties to the current object
foreach ($init as $property => $value)
{
$this->{$property} = $value;
}
我不喜欢和为什么他们在这里使用花括号。如果它是在没有$this->$property = $value;
的情况下编写的,那不是一样的吗?
答案 0 :(得分:1)
你是对的,就像你没有花括号一样。对我来说,将它们放在这里是没有意义的。通常,在字符串文字中可以找到围绕变量的花括号来消除歧义。
例如,
$a = " $b->something says hello.";
这是不明确的,因为你是意味着输出$ b后跟“ - > something”或对象$ b的“something”属性。通常PHP可以解决这个问题,但这要好得多:
$a = " {$b->something} says hello.";
由于花括号消除了歧义。
此致 拉尔夫
答案 1 :(得分:1)
您的示例没有任何优势,但它可能已被用于一致性。下面是一个示例,您可以使用花括号来确保PHP可以解析您尝试执行的操作(访问动态属性):
// Dummy object
$obj = new stdClass();
$obj->color = 'green';
// The dynamic property we want is slightly more complex
$tmp = array('wantProp'=>'color');
// ... so let's use curly braces
echo $obj->{$tmp['wantProp']};