Heredoc と Nowdoc は非常に厳密な構文を持っており、見た目が非常に悪いため、多くの開発者がこれらを避けることになります。コードが醜くなり、コードが読みにくくなります。この問題に対応して、この更新では構文に次の 2 つの変更が加えられました:終了タグのインデントによって、heredoc/nowdoc の各新しい行のスペースの数が決まります。 :
- は終了タグのインデントをサポートします;
- は PHP からの終了タグの改行を強制しなくなりました。 7.2 の現在の実装は、次の簡単な例のようになります。
<?php class foo { public $bar = <<<EOT bar EOT; }バージョン 7.3 では、次の形式が利用可能です:<?php class foo { public $bar = <<<EOT bar EOT; }
<?php // 4 个缩进空格 echo <<<END a b c END; /* a b c */
In PHP 7.2 の現在の実装では、ヒアドキュメント/nowdoc を終了するには改行が必要です。 PHP 7.3 ではこの制約が削除されています:
<?php stringManipulator(<<<END a b c END); $values = [<<<END a b c END, 'd e f'];
Heredoc と Nowdoc の背景
Nowdoc は PHP 5.3.0 バージョンからサポートされています。Heredoc との唯一の違いは、二重引用符と一重引用符の違いです。 Nowdoc は開始タグの周囲に一重引用符を追加し、解析は行われません:
<?php $name = 'Example'; $str = <<<'EOD' Example of string $name spanning multiple lines using nowdoc syntax. EOD;
上記の Nowdoc は出力します:
Example of string $name spanning multiple lines using nowdoc syntax.
Heredocs と Nowdocs の改善により、PHP コードがより読みやすくなり、エラーが発生しやすくなります。一方、タグを閉じるインデントが削除されるため、出力はよりクリーンで直接的になります。
詳細については公式の変更ドキュメント (柔軟な Heredoc および Nowdoc Syntaxes RFC) を読むことをお勧めします。 PHP 公式ドキュメントの Heredoc と Nowdoc。