Почему PHP не поддерживает фигурные скобки для расширения констант в строке? - PullRequest
4 голосов
/ 29 октября 2010

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 Ответ

6 голосов
/ 29 октября 2010

Вьющийся синтаксис - это расширенный переменный синтаксис Он используется для интерполяции переменных в строки. И как в PHP переменные начинаются с $, все остальное приведет к синтаксической ошибке.

Но то, что вы можете сделать, это вызвать переменные-функции. Таким образом вы могли бы сделать:

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

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

Но это хак, который обычно не подходит. Вместо этого, пожалуйста, используйте конкатенацию строк:

echo 'Something ' . Class::Constant;
...