php.net RFC 頻道已經公佈了 PHP 7.3 的 Heredoc 和 Nowdoc 語法更新,這次更新專一於代碼可讀性:php
Heredoc 和 Nowdoc 有很是嚴格的語法,有些時候這令不少開發者避而遠之,由於他們在代碼中看起來很是醜陋,令代碼的可讀性下降。本次的更新針對此問題,對語法作出瞭如下兩個更改:laravel
- 支持閉合標記符的縮進;
- 再也不強制閉合標記符的換行;
從 PHP 7.2 的當前實現來看, 就像這個簡單的例子:flex
<?php class foo { public $bar = <<<EOT bar EOT; }
在 7.3 版本中,如下形式是可用的:spa
<?php class foo { public $bar = <<<EOT bar EOT; }
閉合標記的縮進決定了 heredoc/nowdoc 中每一個新行的空格的數量:.net
<?php // 4 個縮進空格 echo <<<END a b c END; /* a b c */
在 PHP 7.2 的當前實現中, 必須存在一個新行來結束 heredoc/nowdoc。 PHP 7.3 移除了這個約束:3d
<?php stringManipulator(<<<END a b c END); $values = [<<<END a b c END, 'd e f'];
Nowdoc 從 PHP 5.3.0 版本開始支持,他和 Heredoc 的不一樣之處,僅是雙引號和單引號的差異。 Nowdoc 在開始標記周圍添加了單引號,則沒有解析:code
<?php $name = 'Example'; $str = <<<'EOD' Example of string $name spanning multiple lines using nowdoc syntax. EOD;
上面的 nowdoc 會輸出:blog
Example of string $name spanning multiple lines using nowdoc syntax.
Here 文檔 在 wiki 上的定義:ip
在計算機學科中,here文檔,又稱做 heredoc、hereis、here-字串或here-腳本,是一個文件輸入或者數據流輸入:能夠被當成完整文件的塊狀代碼。它能夠保存文字裏面的換行或是縮排等空白字元。一些語言容許在字串裏執行變量替換和命令替換。開發
Heredocs 和 Nowdocs 的改進將會讓你的 PHP 代碼更加具備可讀性,錯誤率也會下降。另外一方面,由於會閉合標記符的縮進會被移除,因此輸出會更加簡潔直接。
推薦閱讀官方的更改文檔 —— flexible Heredoc and Nowdoc Syntaxes RFC。 PHP 官方的文檔 Heredoc 和 Nowdoc。
更多現代化 PHP 知識,請前往 Laravel / PHP 知識社區