PHP 7.3 我們將迎來靈活的 heredoc 和 nowdoc 句法結構


php.net RFC 頻道已經公布了 PHP 7.3 的 Heredoc 和 Nowdoc 語法更新,此次更新專注於代碼可讀性:

Heredoc 和 Nowdoc 有非常嚴格的語法,有些時候這令很多開發者避而遠之,因為他們在代碼中看起來非常丑陋,令代碼的可讀性降低。本次的更新針對此問題,對語法做出了以下兩個更改:

  1. 支持閉合標記符的縮進;
  2. 不再強制閉合標記符的換行;

從 PHP 7.2 的當前實現來看, 就像這個簡單的例子:

<?php
class foo {
    public $bar = <<<EOT
bar
EOT;
}

在 7.3 版本中,以下形式是可用的:

<?php
class foo {
    public $bar = <<<EOT
    bar
    EOT;
}

閉合標記的縮進決定了 heredoc/nowdoc 中每個新行的空格的數量:

<?php

// 4 個縮進空格
echo <<<END
      a
     b
    c
    END;
/*
  a
 b
c
*/

在 PHP 7.2 的當前實現中, 必須存在一個新行來結束 heredoc/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.

Here 文檔 在 wiki 上的定義:

在計算機學科中,here文檔,又稱作 heredoc、hereis、here-字串或here-腳本,是一個文件輸入或者數據流輸入:可以被當成完整文件的塊狀代碼。它可以保存文字里面的換行或是縮排等空白字元。一些語言允許在字串里執行變量替換和命令替換。

Heredocs 和 Nowdocs 的改進將會讓你的 PHP 代碼更加具有可讀性,錯誤率也會降低。另一方面,因為會閉合標記符的縮進會被移除,所以輸出會更加簡潔直接。

獲取更多信息

推薦閱讀官方的更改文檔 ——  flexible Heredoc and Nowdoc Syntaxes RFC。 PHP 官方的文檔 Heredoc 和 Nowdoc

更多現代化 PHP 知識,請前往 Laravel / PHP 知識社區


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM