灵活的 Heredoc 和 Nowdoc 将在 PHP 7.3 中推出

发布时间:作者:

Flexible Heredoc and Nowdoc Coming to PHP 7.3 image

在即将发布的 PHP 7.3 版本中,针对 php.net RFC 中提出的 Heredoc 和 Nowdoc 语法进行了更新。更新侧重于改善外观和可读性。

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 spaces of indentation
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 v5.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 Document 定义如下:

在计算中,Here Document(Here-document、Here-text、Heredoc、Hereis、Here-string 或 Here-script)是文件字面量或输入流字面量:它是源代码文件的一部分,被视为一个单独的文件。该术语也用于一种使用类似语法的多行字符串字面量形式,保留文本中的换行符和其他空白(包括缩进)。

对 Heredocs 和 Nowdocs 的额外关注应使它们在 PHP 中的使用更具可读性,并且由于缩进和以换行符结尾而减少错误。此外,由于根据关闭标记剥离缩进,输出格式将更清晰。

了解更多

您可以阅读关于 灵活的 Heredoc 和 Nowdoc 语法 RFC 的所有详细信息。关于 HeredocNowdoc 的 PHP 字符串文档是学习它们以及 PHP 7.2 中当前实现规则的绝佳场所。

Paul Redmond photo

Laravel 新闻的专栏作家。全栈 Web 开发人员和作者。

分类
Cube

Laravel 新闻通讯

加入 40,000 多位其他开发人员,绝不错过新的技巧、教程等。

Laravel Forge logo

Laravel Forge

轻松创建和管理您的服务器,并在几秒钟内部署您的 Laravel 应用程序。

Laravel Forge
Tinkerwell logo

Tinkerwell

Laravel 开发人员必备的代码运行器。使用 AI、自动完成和对本地和生产环境的即时反馈进行测试。

Tinkerwell
No Compromises logo

No Compromises

Joel 和 Aaron,来自 No Compromises 播客的两名经验丰富的开发人员,现已可以为您的 Laravel 项目聘用。 ⬧ 每月固定费用 7500 美元。 ⬧ 无需冗长的销售流程。 ⬧ 无需签订合同。 ⬧ 100% 退款保证。

No Compromises
Kirschbaum logo

Kirschbaum

提供创新和稳定性,确保您的 Web 应用程序取得成功。

Kirschbaum
Shift logo

Shift

运行旧版 Laravel 版本?即时自动 Laravel 升级和代码现代化,让您的应用程序保持新鲜。

Shift
Bacancy logo

Bacancy

让经验丰富的 Laravel 开发人员(具有 4-6 年经验)以每月 2500 美元的价格为您的项目增光添彩。获得 160 小时的专业知识和 15 天无风险试用。立即安排通话!

Bacancy
Lucky Media logo

Lucky Media

立即获得幸运 - Laravel 开发的理想选择,拥有超过 10 年的经验!

Lucky Media
Lunar: Laravel E-Commerce logo

Lunar: Laravel 电子商务

Laravel 的电子商务。一个开源软件包,为 Laravel 带来了现代无头电子商务功能的强大功能。

Lunar: Laravel 电子商务
LaraJobs logo

LaraJobs

官方 Laravel 招聘网站

LaraJobs
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS 启动工具包

SaaSykit 是一款 Laravel SaaS 启动工具包,它包含运行现代 SaaS 所需的所有功能。支付、精美结账、管理面板、用户仪表板、身份验证、准备好的组件、统计、博客、文档等等。

SaaSykit: Laravel SaaS 启动工具包
Rector logo

Rector

您无缝升级 Laravel、降低成本和加速创新的合作伙伴,帮助成功企业。

Rector
MongoDB logo

MongoDB

通过 MongoDB 和 Laravel 的强大集成增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。支持事务性、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。了解 MongoDB 的灵活、现代数据库如何改变您的 Laravel 应用程序。

MongoDB
Maska is a Simple Zero-dependency Input Mask Library image

Maska 是一个简单的零依赖输入掩码库

阅读文章
Add Swagger UI to Your Laravel Application image

将 Swagger UI 添加到您的 Laravel 应用程序

阅读文章
Assert the Exact JSON Structure of a Response in Laravel 11.19 image

在 Laravel 11.19 中断言响应的精确 JSON 结构

阅读文章
Build SSH Apps with PHP and Laravel Prompts image

使用 PHP 和 Laravel Prompts 构建 SSH 应用程序

阅读文章
Building fast, fuzzy site search with Laravel and Typesense image

使用 Laravel 和 Typesense 构建快速模糊网站搜索

阅读文章
Add Comments to your Laravel Application with the Commenter Package image

使用 Commenter 软件包将评论添加到您的 Laravel 应用程序

阅读文章