Разбор статических переменных в PHP - PullRequest
5 голосов
/ 09 мая 2011

Довольно просто; Я прочитал документы, но, возможно, я просто немного смущен объяснением.

class Test{
    public static $var = 'world';
}

echo "hello {Test::$var}"; // only parses $var in current scope, which is empty

Есть ли способ достичь желаемой функциональности здесь? Я начинаю догадываться, нет, поскольку я попробовал несколько перестановок, но безуспешно.

Уточнение : Я пытаюсь добиться этого с помощью синтаксического анализа PHP, а не конкатенации. Очевидно, я прибегну к объединению, если желаемый метод не возможен, хотя я надеюсь, что это так.

Ответы [ 3 ]

8 голосов
/ 09 мая 2011

Разбор переменных в строках PHP с двойными кавычками работает только для " выражений переменных ".И они всегда должны начинаться с последовательности байтов {$.Ваша ссылка на статический идентификатор, однако, начинается с {T, поэтому PHP анализирует следующие значения $ в ваших двойных кавычках и игнорирует Test::

Вам необходимо использовать некоторые чит-коды.Либо используйте функцию-оболочку NOP:

$html = "htmlentities";
print "Hello {$html(Test::$var)}";

Или предварительно определите имя класса как переменную:

$Test = "Test";
print "Hello {$Test::$var}";

Боюсь, что нет другого способа сделать это иначе.*

0 голосов
/ 09 мая 2011

Работает с оператором конкатенации строк (.)

echo "hello ".Test::$var; 

EDIT

Примечание: функции, вызовы методов, статические переменные класса и константы класса внутри {$} работает с PHP 5. Однако полученное значение будет интерпретировано как имя переменной в области видимости в котором строка определена. С помощью одиночные фигурные скобки ({}) не будут работать для доступа к возвращаемым значениям функции или методы или значения константы класса или статический класс переменные.

Источник Через Этот ответ

0 голосов
/ 09 мая 2011

Вы всегда можете разбить эхо на более мелкие кусочки.

class Test{
    public static $var = 'world';
}

echo "hello ", Test::$var;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...