PHP 语言简史 & 我们能从中学到什么

今年,PHP 迎来了它的三十岁生日 🎉 在这个特殊时刻,我想简要总结一下 PHP Web 开发的历史,以便更好地理解 PHP 编程语言的现状和未来。我相信从这个故事中我们可以学到很多东西。

那么,让我们开始吧...

那是在 1995 年 6 月,三十年前... 或者等等,让我们从更早一点开始...

这一切是如何开始的?

1968 年 11 月,在寒冷的格陵兰岛,未来的程序员 Rasmus Lerdorf 出生了。万维网还要再过 21 年才会被发明。而格陵兰岛仍然是丹麦王国的一部分,还没有人试图购买它 😉

他的父母会知道 Rasmus 将来会成为程序员吗?可能不会,因为 C 编程语言还要再过几年才会出现。

快进到 1994 年。Rasmus Lerdorf 正在制作他的在线简历。是的,在线简历,因为万维网在 1989 年被发明,并在 1993 年向公众开放。他可能是最早拥有数字简历的人之一 💪

Rasmus 想要追踪有多少人访问了他的简历。在那个时候你会怎么做呢?这远在 Google Analytics 推出之前。天哪,Google 本身还要再过四年才会出现!那么他做了什么?他首先用 Perl 编写了一套简单的通用网关接口(CGI)二进制文件,后来用 C 编程语言重写,最终导致了 PHP 的诞生。这是他的故事:

"PHP 最初是一个用 Perl 编写的简单 CGI 包装器。我在合同之间的空闲时间里花了一个下午写出来的,当时我需要一个快速工具来了解谁在阅读我的在线简历。它从未打算超出我个人的私人使用范围。托管我简历的 Web 服务器负载极重,经常出现 fork 进程的问题。我用 C 重写了 Perl 包装器,以消除每次访问简历时都必须 fork Perl 的巨大开销。"

~Rasmus Lerdorf (来源: https://www.php.net/manual/phpfi2.php)

从 PHP 工具到 PHP Foundation

后来,使用同一台 Web 服务器的更多人联系 Rasmus,询问是否可以使用他的包装器。正如通常的情况,如果你给了人们一些东西,他们就会不断要求更多。所以 Rasmus 为他的工具集添加了越来越多的功能,最终形成了一个半完整的发行版,包括文档、邮件列表和常见问题解答。他是如何命名的呢?"个人主页工具"(Personal Home Page Tools),简称 PHP 工具集。

PHP/FI(又名 PHP 1)

当时,Rasmus 也开始尝试数据库,并开发了一个工具,用于将 SQL 查询无缝集成到网页中。这个解决方案本质上是一个 CGI 包装器,解析 SQL 查询并简化基于这些查询的表单和表格的创建。他将这个工具命名为表单解释器(Form Interpreter),简称 FI。这就是 PHP/FI 的诞生。许多人称之为 PHP v1。

PHP 2

1997 年,PHP 缩写正式改为 PHP: HyperText Preprocessor(超文本预处理器)。在 PHP/FI 2.0 的第二个版本中,Rasmus 完全重写了 PHP 和 FI 包,并将它们合并到一个程序中。它也发展到了这样的程度,即它成为了嵌入在 HTML 文件中的简单脚本语言。这可能是"动态网页"这个术语诞生的时刻,因为 PHP 用服务器端生成的内容丰富了静态 HTML 站点。正是以这种方式,它将在未来许多年中为人所知,直到 Web 开发进入模板化,最终是 API 和 SPA 应用程序。

PHP 3

1997 年,来自特拉维夫的两名以色列学生 Andi Gutmans 和 Zeev Suraski 就他的 PHP 实现在线联系了 Rasmus。他们想将其用于他们的大学项目,但它效率低下且缺乏一些功能。因此,他们开始讨论当前实现和重新开发 PHP 的各个方面。这就是 PHP 版本 3 的诞生。它引入了面向对象编程,是第一个或多或少类似于今天存在的 PHP 的版本。两年后,Zeev 和 Andi 将他们的名字组合起来注册了他们的新公司 - Zend Technologies。你可能听说过它 😉

PHP 4

2000 年 5 月带来了 PHP 版本 4。它是引入 HTTP 会话和输出缓冲等功能的版本。Andi Gutmans 和 Zeev Suraski 在 v3 正式发布后立即开始研究它。他们的目标是改进 PHP 及其在更大更复杂应用程序中的性能。他们工作的结果是发布了 Zend Engine 1.0,它成为了 PHP 4 的核心。

得益于版本 3 中引入的 OOP 和版本 4 中的新功能,PHP 成为了比简单的动态网页脚本语言更重要的东西。它从超文本预处理器演变为一个成熟的编程语言,用于构建越来越流行的动态 Web 应用程序和 API。大约在这个时候,第一个 RESTful API 开始出现。

PHP 4 也是第一个为... WordPress 1.0 提供支持的版本!这个流行的 CMS 的第一个公开版本于 2003 年 5 月发布,当时大多数服务器都在运行 PHP 4.1。这可能是 PHP 历史上的关键时刻之一。这也是导致著名统计数据说 PHP 为整个互联网的 80% 以上提供动力的火花。一年后,年轻的哈佛学生 Mark Zuckerberg(听说过他吗?😉)将使用 PHP 4 编写 thefacebook.com。

PHP 5

快速跳到 2004 年 7 月和 PHP v5 的发布。到这个时候,PHP 的开发社区包括数十名开发人员,以及为 PEAR、PECL 和文档等 PHP 相关项目做出贡献的众多其他人。这对 PHP 来说是一个巨大的成功,人们相信这种编程语言目前安装在全世界数亿个域名上。

PHP 5 代表了语言的根本性重新设计,具有新的 Zend Engine,提高了性能,同时通过更好的语法和功能扩展了面向对象编程功能。它还添加了异常处理和增强的错误报告等创新。这些进步帮助巩固了 PHP 作为 Web 开发强大且广泛使用的语言的地位。

2005 年发布的 Symfony 第一个版本用许多有用的组件扩展了 PHP 代码。

2004 年和 PHP 5 的发布也是热情的 Perl 开发者 Fabien Potencier 的转折点。正是在那时,他决定将注意力转向 PHP,并创建了 Symfony 框架项目(一年后发布),以帮助他的公司利用 PHP 的力量来构建复杂的 Web 应用程序。

可能会让你惊讶的是,截至 2025 年 4 月,仍有超过 10% 的 PHP 页面使用版本 5!

PHP 6

传奇的 🦄 PHP 第六版。如何总结它?我认为这个漫画很好地说明了:

现在更严肃地说 - 为什么 PHP 6 从未发布?计划是在 PHP 中引入深度原生 Unicode 支持。不幸的是,围绕这个实现的技术困难数量(包括性能问题和向后兼容性)导致在 2010 年放弃了 PHP 6 项目及其 Unicode 功能。为 PHP 6 开发的许多非 Unicode 功能被整合到 PHP 5.3 和 5.4 中。对于下一个 PHP 版本,Web 开发者不得不等待超过十年。但与此同时,PHP 发生了两件重要的事情。首先,2009 年我们成立了 Accesto 😉 一年后,Taylor Otwell 发布了 Laravel 的第一个版本。出于某种原因,我认为第一个是更重要的事实 - 但我猜你可能会不同意 😉

PHP 7

这个版本感觉就像昨天一样,但已经 10 岁了!2015 年发布,提供了实质性的性能增强(比 PHP 5.6 快两倍 🚀)并减少了内存消耗。其后续版本 7.1-7.4 添加了许多语言功能,如 ?? 操作符、匿名类和返回类型声明,仅举几例。

PHP 8

PHP 8.0 于 2020 年发布,具有许多新功能(例如命名参数、联合类型、属性、空安全操作符)和显著的性能改进(由于 JIT 编译器,差异巨大)。进一步的次要版本为我们带来了枚举、纤程、只读类、DNF 类型和类型化类常量。还有更多!对于仅仅是一个次要版本来说,这是一个令人印象深刻的列表。

最新的 PHP 版本(8.4)引入了属性钩子、非对称可见性和数组函数。

PHP 基金会

2021 年 11 月标志着 PHP 历史的另一个重要里程碑。PHP 的重要贡献者之一 Nikita Popov 正在离开项目。这是 PHP 的终结吗?恰恰相反!这个事件成为了一系列事件的催化剂,最终导致了 PHP Foundation 的成立。其使命是确保 PHP 语言的长期繁荣。从现在开始,PHP 作为一种编程语言拥有了一支由核心开发人员、贡献者和支持者组成的坚实团队。

我们能从 PHP 历史中学到什么?

PHP 的历史表明,这从来不是一个炒作驱动的语言。在其整个历史中,PHP 并不是第一个引入各种功能的。它采用面向对象编程相当晚,多年来与类型系统相去甚远。但同时,它从未停止进化!PHP 可能不是最新的或时髦的,可能还没有所有的语法糖。但它最终会获得现代语法。可能不是第一个,但正因为如此,它只实现了那些在其他语言和其他技术中被证明有用的解决方案。最终,现代 PHP 代码与 Web 开发者使用的任何其他当代语言没有太大区别。

变得成熟,而不是变老!

在过去的 30 年里,PHP 作为一门语言不断发展和改进。这些年里它并没有变老!恰恰相反,它不断进化并适应现代 Web 开发。

在 30 年的持续发展之后,你还能改进多少?PHP 表明还有很多。最新版本 8.4 引入了属性钩子、非对称可见性和数组函数。但语言功能是一回事,更好的安全性和性能改进是另一回事。

说到性能。上个月,我们为我们的一个客户将 PHP 从 8.1 升级到最新的 8.4。结果如何?大约 15-20% 的性能提升:

我们已经在版本 7 和版本 8 的先前升级中看到了这个项目的一些良好性能提升。所以我真的没有期望这次有任何显著的进一步改进。但 PHP 继续让我惊喜。30 年后,我们仍然可以期待一些不错的收益。向所有核心 PHP 开发者致敬!💪

PHP 是出于必要性而构建的

个人而言,我也喜欢 PHP 是由 Rasmus Lerdorf 为解决他的现实生活问题而创建的事实。多年来,它继续以同样的方式发展 - 由真实需求驱动,而不是由炒作驱动。PHP Foundation 也是如此。它的成立不是为了获得对 PHP 开发的权力,也不是因为拥有一个基金会很酷。它是出于支持 PHP 及其增长的真实需求而建立的。

最近,我们的 CTO 对 PHP Foundation 的执行董事 Roman Pronskiy 进行了一次小采访。Roman 透露了几个将在未来几个月和几年中塑造 PHP 未来的计划。它们都是由真实需求驱动的,而不是由炒作驱动的。例子?在 PHP 中引入泛型类型,以及由德国政府支持的机构支持的 PHP 语言广泛安全审计!

生日快乐,PHP!

有些人可能认为 30 岁的编程语言是一个完成的历史。经过这么多年,我们不应该期望任何新的语言功能。但这绝对不是 PHP 的情况!它可能不是第一个引入各种功能的,但你不必是第一个才能是坚实的、可靠的,正因为如此... 相关的。个人而言,我喜欢 PHP,因为 30 年后它仍然可以变得更好更好。

JaguarJack
后端开发工程师,前端入门选手,略知相关服务器知识,偏爱❤️ Laravel & Vue
本作品采用《CC 协议》,转载必须注明作者和本文链接