在$ this附近包含变量名称的花括号是什么意思

时间:2014-01-20 07:53:40

标签: php

我刚刚遇到这段代码:

// Assign initialized properties to the current object
foreach ($init as $property => $value)
{
    $this->{$property} = $value;
}

我不喜欢和为什么他们在这里使用花括号。如果它是在没有$this->$property = $value;的情况下编写的,那不是一样的吗?

2 个答案:

答案 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']};