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;
}
Вот как можно пользоваться heredoc, он же нарушает картину вложенности блоков. Лучше бы ввели %Q из Ruby.
Не понимаю почему в одном случае EOT ’взято’ в кавычки, а в другом нет. Во-первых непоследовательно, во-вторых непреемственно, в-третьих зачем они вообще, кавычки о_О.
Комментарий для alisey.myopenid.com:
Иногда это очень удобно, но в Perl6 это куда удобнее…
Комментарий для zencd.livejournal.com:
Кавычки, чтобы отличить heredoc и nowdoc.
Жаль, что только в 5.3 появился, некоторые хостинги всё ещё 5.2 используют...