Какой такой синтаксис в PHP?

$test= <<<EOF

....

EOF;

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

Ответ 1

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


Цитирование страницы руководства:

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

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


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

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

Он даст вам этот результат:

Hello, World!

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

<p>
  Hello, World!
</p>

Ответ 2

Это будет Heredoc

Ответ 3

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

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

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

Ответ 4

В самом деле, это синтаксис Heredoc.

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

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

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