代码之家  ›  专栏  ›  技术社区  ›  dlchambers

为什么PHP不支持字符串中常量的花括号扩展?

  •  4
  • dlchambers  · 技术社区  · 14 年前

    PHP支持:

    $z = 5;
    $str = "z is $z";  // result: "z is 5"
    

    $c = new StdClass();
    $c->x = 9;
    $str = "x is {$c->x}";  // result: "x is 9"
    

    但它并不支持这一点:

    class abc
    {
       const n = 2;
    }
    $str = "x is {abc::n}";  // result: "x is {abc::n}"
    

    为什么PHP 是否支持通过大括号语法插入常量?好像应该。。。

    1 回复  |  直到 14 年前
        1
  •  7
  •   NikiC    14 年前

    卷曲语法是 变量 语法。它用于插值 变量 $ 其他一切都会产生语法错误。

    但你能做的是调用变量函数。因此,您可以:

    $_ = function ($expr) { return $expr; };
    
    echo "Something {$_(Class::Constant)}";
    

    但这通常是不合适的。请改用字符串连接:

    echo 'Something ' . Class::Constant;