Использование переменных статического класса – в heredoc

Я создал класс, который упрощен:

class Labels { static public $NAMELABEL = "Name"; } 

Я успешно получил следующий код для работы:

 echo '<table border="1">'; echo '<tr>'; echo "<th>" . Labels::$NAMELABEL . "</th>"; echo '</tr>'; // the rest of the Table code not shown for brevity... echo "</table>"; 

Когда я запускаю это, я вижу таблицу с заголовком столбца под названием « Имя», поэтому он отлично работает.

Но не внутри heredoc – я получаю «Примечание: неопределенная переменная: NAMELABEL в C: \ xampp …….. blah blah», когда я запускаю следующее:

  echo <<<_END <form action="index.php" method="post"><pre> Labels::$NAMELABEL : <input type="text" name="author" /> <input type="submit" value="ADD RECORD" /> </pre></form> _END; 

Я пробовал все виды цитирования, строковый оператор concat '.', Ничего не работает. Я подумал: «Ну, я получил переменные статического класса для работы в таблице HTML, почему бы и нет heredoc».

Dang Я люблю heredocs, у них странное имя и странные проблемы. Это своего рода забавный вид, который я жажду, heredocs – это праведные маленькие обезьяны-обезьяны.

Я действительно хочу использовать мои статические переменные класса здесь – есть ли какая-то комбинация кавычек / конкатенации строк, которая позволит мне встроить их в мои heredocs?

Интерполяция в heredocs работает так же, как и в двойных кавычках, поэтому вы можете использовать синтаксис фигурного скобки («сложный») .

Однако анализатор не распознает статические переменные класса (см. Предыдущую документацию). Чтобы ссылаться на статические переменные класса, вам необходимо установить их локально следующим образом:

 $label = Labels::$NAMELABEL; echo <<<_END <form action="index.php" method="post"><pre> $label : <input type="text" name="author" /> <input type="submit" value="ADD RECORD" /> </pre></form> _END;