PHP поддерживает это:Почему 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 не вставки поддержка consts через синтаксис фигурной скобки? Похоже, что это должно ...
PHP-токенизатор ищет '$' в двойных кавычках. Переменные являются основной целью интерполяции в строках, а не выражениями. И '{' является просто синтаксическим сахаром вокруг переменных, но на самом деле не предполагается начинать сложную интерпретацию внутри строк. Иногда это умно используется неправильно, но оно действительно предназначено только для переменных. Вот почему {константы} не поддерживаются. – mario