PHP 6 的诞生;
在版本 5 之后:PHP 由于在核心语言级别缺乏原生 Unicode 支持而收到了褒贬不一的评价。2005 年,由 Andrei Zmievski 领导的一个项目启动,旨在通过嵌入 International Components for 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 分支,最初被称为 PHP 下一代 (phpng)。它由 Dmitry Stogov、Xinchen Hui 和 Nikita Popov 编写,旨在通过重构 Zend 引擎来优化 PHP 性能,同时保留几乎完全的语言兼容性。到 2014 年 7 月 14 日,WordPress 基准测试(作为 phpng 项目的主要基准测试套件)显示性能提高了近 100%。phpng 的更改使将来版本的性能改进变得更加容易,因为更紧凑的数据结构和其他更改被认为更适合成功迁移到即时 (JIT) 编译器。由于这些重大更改,重新设计的 Zend 引擎被称为 Zend 引擎 3,它接替了 PHP 5 中使用的 Zend 引擎 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 提供了未来的潜力,因为对于某些用例来说,性能有所提升。
添加 match 表达式
主要文章:PHP 语法和语义 § match
PHP 8 引入了 match 表达式。match 表达式在概念上类似于 switch 语句,对于某些用例来说更加紧凑。由于 match 是一个表达式,因此它的结果可以被捕获到一个变量中或从一个函数中返回。
类型更改和添加
PHP 8 引入了联合类型、新的 static 返回类型和新的 mixed 类型。
“属性”,在其他编程语言中通常被称为“注解”,在 PHP 8 中添加,允许将元数据添加到类中。
throw 从一个语句变为了一个表达式。这允许在以前不可能的地方抛出异常。来源:维基百科