4

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支持通过花括号语法插入 const?好像应该...

4

1 回答 1

7

curly 语法是扩展变量语法。它用于将变量插入字符串。并且在 PHP 变量中,以其他所有内容开头$都会产生语法错误。

但是你可以做的是调用变量函数。因此你可以这样做:

$_ = function ($expr) { return $expr; };

echo "Something {$_(Class::Constant)}";

但这是一个通常不合适的hack。请改为使用字符串连接:

echo 'Something ' . Class::Constant;
于 2010-10-29T15:41:39.777 回答