ホームページ  >  記事  >  PHP7.3 の新機能: 柔軟な heredoc および nowdoc 構文構造が導入されます。

PHP7.3 の新機能: 柔軟な heredoc および nowdoc 構文構造が導入されます。

无忌哥哥
无忌哥哥オリジナル
2018-07-12 10:43:192778ブラウズ

PHP7.3 の新機能: 柔軟な heredoc および nowdoc 構文構造が導入されます。

php.net RFC チャネルは、PHP 7.3 の Heredoc および Nowdoc 構文の更新を発表しました。この更新は、コードの読みやすさに重点を置いています。

Heredoc と Nowdoc は非常に厳密な構文を持っており、見た目が非常に悪いため、多くの開発者がこれらを避けることになります。コードが醜くなり、コードが読みにくくなります。この問題に対応して、この更新では構文に次の 2 つの変更が加えられました:

  1. は終了タグのインデントをサポートします;

  2. は PHP からの終了タグの改行を強制しなくなりました。 7.2 の現在の実装は、次の簡単な例のようになります。

    <?php
    class foo {
        public $bar = <<<EOT
    bar
    EOT;
    }
    バージョン 7.3 では、次の形式が利用可能です:
  3. <?php
    class foo {
        public $bar = <<<EOT
        bar
        EOT;
    }
終了タグのインデントによって、heredoc/nowdoc の各新しい行のスペースの数が決まります。 :
<?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.

Wiki のヒア ドキュメント定義:

コンピューター サイエンスでは、ヒア ドキュメント (ヒアドキュメントとも呼ばれます)、A hereis here-string または here-script は、ファイル入力またはデータ ストリーム入力、つまり完全なファイルとして扱うことができるコードのブロックです。テキスト内の改行やインデントなどの空白文字を保存できます。一部の言語では、文字列内の変数置換とコマンド置換が可能です。

Heredocs と Nowdocs の改善により、PHP コードがより読みやすくなり、エラーが発生しやすくなります。一方、タグを閉じるインデントが削除されるため、出力はよりクリーンで直接的になります。

詳細については

公式の変更ドキュメント (柔軟な Heredoc および Nowdoc Syntaxes RFC) を読むことをお勧めします。 PHP 公式ドキュメントの Heredoc と Nowdoc。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。