Что это за синтаксис в PHP?

$test= <<<EOF

....

EOF;

Я никогда не видел это раньше. Для чего он используется?

4 ответа

Решение

Это называется синтаксисом HEREDOC, который позволяет определять строки в несколько строк с переменной интерполяцией.


Цитирование справочной страницы:

Текст Heredoc ведет себя как строка в двойных кавычках, без двойных кавычек. Это означает, что кавычки в heredoc не нужно экранировать, но коды перехода, перечисленные выше, все еще можно использовать. Переменные раскрываются, но при выражении сложных переменных внутри heredoc необходимо соблюдать ту же осторожность, что и со строками.

(Есть еще что почитать, что я не копировал-вставлял со страницы руководства)


И, как очень быстрый и простой пример:

$a = 'World';
$string = <<<MARKER
<p>
  Hello, $a!
</p>
MARKER;
echo $string;

Это даст вам такой вывод:

Hello, World!

И этот источник HTML:

<p>
  Hello, World!
</p>

Это был бы Эредок

Действительно, это синтаксис Heredoc.

На тот случай, если вам интересно, какой интерес это может иметь по сравнению с обычными разделителями строк:

// These strings contain the same thing '"'"
$s1 = '\'"\'"';
$s2 = "'\"'\"";
$s3 = <<<EOS
'"'"
EOS

Больше не нужно избегать цитаты.
Типичный пример использования для меня - это когда мне нужно сохранить в строке некоторый HTML-код, который я скопировал / вставил.

http://www.php.net/manual/en/language.types.string.php

Цитата Третьим способом разделения строк является синтаксис heredoc: <<<. После этого оператора предоставляется идентификатор, затем новая строка. Далее следует сама строка, а затем снова тот же идентификатор, чтобы закрыть цитату.

Закрывающий идентификатор должен начинаться в первом столбце строки. Кроме того, идентификатор должен следовать тем же правилам именования, что и любая другая метка в PHP: он должен содержать только буквенно-цифровые символы и подчеркивания и должен начинаться с нецифрового символа или подчеркивания.

Другие вопросы по тегам