目录
Heredoc 和 Nowdoc 的背景
获取更多信息
首页 头条 PHP7.3新特性:将迎来灵活的 heredoc 和 nowdoc语法结构

PHP7.3新特性:将迎来灵活的 heredoc 和 nowdoc语法结构

Jul 12, 2018 am 10:43 AM

PHP7.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。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)