php.net RFC 頻道已經公佈了PHP 7.3 的Heredoc 和Nowdoc 語法更新,此次更新專注於程式碼可讀性:
#Heredoc 和Nowdoc 有非常嚴格的語法,有些時候這令許多開發者避而遠之,因為他們在程式碼中看起來非常醜陋,令程式碼的可讀性降低。本次的更新針對此問題,對語法做出了以下兩個更改:
支援閉合標記符的縮排;
#不再強制閉合標記符的換行;從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。 ###