2020 年 6 月 8 日,PHP 迎来了自己的 25 周岁生日。JetBrains 在博客中梳理了该语言自 1995 年诞生以来的种种历程,这种语言最初是用 C 语言编写的一组通用网关接口(Common Gateway Interfac,CGI)二进制文件,第一个 PHP 脚本套件被称为“个人主页工具”或“PHP 工具”。
1998 年发布的 PHP 的第三次迭代是 Andi Gutman 和 Zeev Suraski 重写了 Lerdorf 编写的现有解释器的结果。JetBrains 解释称,此版本的 PHP 3.0 很像现在的 PHP 的第一个版本。 语言的名称改为递归缩写“PHP: Hypertext Preprocessor”。顶峰时,PHP 3 安装在互联网大约 10% 的 Web 服务器上。1999年,Zend 公司成立,直到今天,Zend 仍在继续为 PHP 做出贡献并积极参与其中。
最初没有 PHP 的正式规范,在着这种情况下该语言仍持续发展了 20 年的时间。直到 2014 年,PHP 规范出现。PHP 语言规范在 Facebook 内部开发,然后转移到了公共领域。
而与此同时,除了这个 25 周年纪念日外,PHP 8.0 也有望在今年发布。程序员 Brent Roose 透露了即将在 2020 年 11 月底发布的 PHP 8.0 中即将发布的功能。此版本的第一个 Alpha 版将于 6 月 18 日发布。同时,PHP 8.0 将引入多项重大更改,并引入一些新功能,例如 JIT 编译器、联合类型和属性。
JIT 编译器
Roose 解释称,尽管还没有基准测试,但 JIT 编译器有可能改善 PHP 的性能。不像 C 或 Java 这样的编译语言,PHP 是一种解释性语言,这意味着它会在运行时转换为机器码。JIT 在运行时编译部分代码,以便可以使用代码的编译版本。并表示,将 JIT 编译器添加到 PHP 的原因是,它可能使其能够在 Web 开发上下文之外被视为一种高性能语言,并且可以随着时间的流逝而得到改进。但是,一个很大的缺点是维护起来很复杂。
联合类型
联合类型是两种或多种类型的集合,表示可以使用其中任何一种。而由于 PHP 是一种动态类型的语言,因此联合类型有很多用例。
属性
属性在其他语言中通常称为注解,它提供了一种向类添加元数据的方法,而无需解析文档块。
RFC 中的属性示例:
use App\Attributes\ExampleAttribute; <<ExampleAttribute>> class Foo { <<ExampleAttribute>> public const FOO = 'foo'; <<ExampleAttribute>> public $x; <<ExampleAttribute>> public function foo(<<ExampleAttribute>> $bar) { } }
<<Attribute>> class ExampleAttribute { public $value; public function __construct($value) { $this->value = $value; } }
有关功能和代码示例的完整列表可查看:https://stitcher.io/blog/new-in-php-8