【问题标题】:what's the meaning of curly braces enclosing the variable name near $this在 $this 附近包含变量名的花括号是什么意思
【发布时间】:2014-02-09 07:28:56
【问题描述】:

我刚刚遇到了这段代码:

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

我不明白他们为什么在这里使用花括号。如果没有他们写的话谁不一样$this->$property = $value;

【问题讨论】:

  • @elclanrs,用答案回答:^)
  • @sectus ...太有趣了 elclanrs 有 32k 代表...概率知道何时使用和不使用答案,哈哈。
  • 可能是 $this->{$property . "xyz"} = $value; 这样的代码的残余,或者作者只是觉得大括号使它更清晰(一种风格)。

标签: php


【解决方案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']};

【讨论】:

    【解决方案2】:

    你是对的,就像你没有花括号一样。对我来说,让他们在这里没有意义。通常,在字符串文字中会发现变量周围的花括号以消除歧义。

    例如,

    $a = " $b->something says hello.";
    

    这是模棱两可的,因为你的意思是输出 $b 后跟“->something”或对象 $b 的“something”属性。通常 PHP 会解决这个问题,但这要好得多:

    $a = " {$b->something} says hello.";
    

    花括号消除了歧义。

    问候, 拉尔夫

    【讨论】:

      猜你喜欢
      • 2014-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 2012-03-30
      相关资源
      最近更新 更多