Как я могу заставить PHP оценивать статическую переменную в двойных кавычках?
Я хочу сделать что-то вроде этого:
log("self::$CLASS $METHOD entering");
Я пробовал всевозможные {} комбо, чтобы получить значение переменной self :: $ CLASS, но ничего не сработало. Я в настоящее время соглашался с конкатенацией строк, но больно печатать:
log(self::$CLASS . " $METHOD entering");
Извините, вы не можете этого сделать. Он работает только для простых выражений. См. Здесь .
К сожалению, пока еще нет способа сделать это. Пример в одном из ответов здесь не будет работать, потому что {${self::$CLASS}}
не вернет содержимое self::$CLASS
, но вернет содержимое переменной с именем в self::$CLASS
.
Вот пример, который не возвращает myvar
, но aaa
:
$myvar = 'aaa'; self::$CLASS = 'myvar'; echo "{${self::$CLASS}}";
Я не знаю ответа на ваш вопрос, но вы можете показать имя и метод класса, используя магическую константу __METHOD__
.
Просто живи с конкатенацией. Вы были бы удивлены, насколько может быть неэффективная переменная интерполяции в строках .
И хотя это может подпасть под зонтику предварительной оптимизации или микро-оптимизации, я просто не думаю, что вы на самом деле получаете какую-то элегантность в этом примере.
Лично, если я собираюсь сделать крошечную оптимизацию того или другого, и мой выбор «быстрее» и «проще набирать» – я собираюсь выбрать «быстрее». Потому что вы только набираете его несколько раз, но он, вероятно, будет выполняться тысячи раз.
Да, это можно сделать:
log("{${self::$CLASS}} $METHOD entering");