Я создал класс, который упрощен:
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;