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 知识社区