Это сайт — моя персональная записная книжка. Интересна мне, по большей части, история, своя жизнь и немного программирование.

NOWDOC в PHP 5.3.0

В PHP 5.3.0 появилась новая синтаксическая конструкция: «NOWDOC». Сильно похожа на «heredoc», но с тем различием, что в «nowdoc» нет интерполяции переменных:

Следующий пример выведет в точности тот текст, который находится внутри nowdoc:

echo <<<'EOT'
My name is "$name". I am printing some $foo->foo.
Now, I am printing some {$foo->bar[1]}.
This should not print a capital 'A': x41
EOT;

Второе отличие от heredoc, что nowdoc можно использовать в любом статическом контексте, например так:

class foo {
    public $bar = <<<'EOT'
bar
EOT;
}
5 комментариев
Alisey (alisey.myopenid.com) 2008

Вот как можно пользоваться heredoc, он же нарушает картину вложенности блоков. Лучше бы ввели %Q из Ruby.

zencd.livejournal.com 2008

Не понимаю почему в одном случае EOT ’взято’ в кавычки, а в другом нет. Во-первых непоследовательно, во-вторых непреемственно, в-третьих зачем они вообще, кавычки о_О.

Евгений Степанищев (bolknote.ru) 2008

Комментарий для alisey.myopenid.com:

Иногда это очень удобно, но в Perl6 это куда удобнее…

Евгений Степанищев (bolknote.ru) 2008

Комментарий для zencd.livejournal.com:

Кавычки, чтобы отличить heredoc и nowdoc.

Test 2012

Жаль, что только в 5.3 появился, некоторые хостинги всё ещё 5.2 используют...