PHP 6 的诞生;
5 版之后:由于核心语言级别缺乏原生 Unicode 支持,PHP 收到了褒贬不一的评价。2005 年,由 Andrei Zmievski 领导的一个项目启动,旨在通过嵌入 Unicode 国际组件 (ICU) 库并在内部将文本字符串表示为 UTF-16 来为 PHP 带来原生 Unicode 支持。由于这将对语言内部结构和用户代码造成重大更改,因此计划将其作为该语言的 6.0 版本发布,以及当时正在开发的其他主要功能。
PHP 7 的诞生;
在 2014 年和 2015 年期间,开发了一个新的主要 PHP 版本,PHP 7。此版本的编号在内部开发人员之间引起了一些争论。虽然 PHP 6 Unicode 实验从未发布,但几篇文章和书籍标题都提到了 PHP 6 的名称,如果新版本要重用此名称,可能会造成混淆。经过投票,最终选择了 PHP 7 的名称。
PHP 7 的基础是一个最初被称为 PHP 新一代 (phpng) 的 PHP 分支。它由 Dmitry Stogov、Xinchen Hui 和 Nikita Popov 编写,旨在通过重构 Zend 引擎来优化 PHP 性能,同时保持几乎完全的语言兼容性。到 2014 年 7 月 14 日,基于 WordPress 的基准测试(作为 phpng 项目的主要基准测试套件)显示性能提高了近 100%。phpng 的更改使在未来版本中更容易提高性能,因为更紧凑的数据结构和其他更改被认为更适合成功迁移到即时 (JIT) 编译器。由于进行了重大更改,因此重做的 Zend 引擎被称为 Zend Engine 3,它继承了 PHP 5 中使用的 Zend Engine 2。
根据 PHP 的发布流程,由于 phpng 进行了重大的内部更改,它必须接收新的主要 PHP 版本号,而不是次要的 PHP 5 版本。PHP 的主要版本允许破坏代码的向后兼容性,因此 PHP 7 提供了一个机会来进行 phpng 之外的其他改进,这些改进需要破坏向后兼容性。
PHP 8 的诞生;
PHP 8 于 2020 年 11 月 26 日发布。PHP 8 是一个主要版本,与之前的版本相比有重大更改。新功能和显著更改包括
即时编译
PHP 8 支持即时编译。
PHP 8 的 JIT 编译器可以为某些用例提供显著的性能改进。PHP 开发人员 Nikita Popov 表示,对于大多数网站而言,性能改进不如从 PHP 5 升级到 PHP 7 那样显著。由于添加了 JIT 编译器,预计对于数学类型运算的性能改进将比常见的 Web 开发用例更显著。此外,JIT 编译器为将某些代码从 C 移动到 PHP 提供了未来的潜力,因为某些用例的性能得到了提高。
添加匹配表达式
主要文章:PHP 语法和语义 § 匹配
PHP 8 引入了匹配表达式。匹配表达式在概念上类似于 switch 语句,并且在某些情况下更简洁。因为匹配是一个表达式,所以它的结果可以被捕获到一个变量中或从函数中返回。
类型更改和添加
PHP 8 引入了联合类型、新的静态返回类型和新的混合类型。
“属性”(在其他编程语言中通常称为“注释”)已添加到 PHP 8 中,允许将元数据添加到类中。
throw 已从语句更改为表达式。这允许在以前不可能的地方抛出异常。来源:维基百科