Подтвердить что ты не робот

Статические переменные PHP в двойных кавычках

Как я могу заставить PHP оценивать статическую переменную в двойных кавычках?

Я хочу сделать что-то вроде этого:

log("self::$CLASS $METHOD entering");

Я пробовал всевозможные {} комбо, чтобы получить значение переменной self:: $CLASS, но ничего не сработало. В настоящее время я согласен с конкатенацией строк, но больно печатать:

log(self::$CLASS . " $METHOD entering");
4b9b3361

Ответ 1

Извините, вы не можете этого сделать. Он работает только для простых выражений. См. здесь.

Ответ 2

К сожалению, пока еще нет способа сделать это. Пример в одном из ответов здесь не будет работать, потому что {${self::$CLASS}} не вернет содержимое self::$CLASS, но вернет содержимое переменной с именем в self::$CLASS.

Вот пример, который не возвращает myvar, но aaa:

$myvar = 'aaa';
self::$CLASS = 'myvar';
echo "{${self::$CLASS}}";

Ответ 3

Я не знаю ответа на ваш вопрос, но вы можете показать имя и метод класса с помощью __METHOD__ магической константы.

Ответ 4

Просто живи с конкатенацией. Вы были бы удивлены тем, как неэффективная интерполяция переменных в строках может быть.

И хотя это может подпасть под зонтику предварительной оптимизации или микро-оптимизации, я просто не думаю, что вы на самом деле получаете какую-то элегантность в этом примере.

Лично, если я собираюсь сделать крошечную оптимизацию того или другого, и мои варианты "быстрее" и "легче набирать" - я собираюсь выбрать "быстрее". Потому что вы вводите его несколько раз, но он, вероятно, будет выполняться тысячи раз.

Ответ 5

Да, это можно сделать:

log("{${self::$CLASS}} $METHOD entering");