发布于 2026-01-06 0 阅读
0

对 PHP 的势利妖魔化

对 PHP 的势利妖魔化

我可能比你年纪大,胡子都白了,经验也丰富。过去二十多年里,我有幸见证了许多编程潮流的变迁。我见过一些语言风靡一时(比如Ruby),也见过其中一些语言被人唾弃(比如ColdFusion)。所以,我很好奇 PHP 目前在市场上的境遇(以及它长期以来的境遇)。

第一种“网络”语言

我从1995年就开始做网页了(没错……我就是这么老)。我的第一个网站托管在Geocities上(没错……我就是这么老)。到了1998年,我就对“静态”网页的局限性感到沮丧,开始寻找其他解决方案。那时候,创建真正动态网站的选择非常有限。事实上,我刚开始接触这个领域时,只有两种选择:Perl或PHP。

需要说明的是,我非常尊重 Perl。它是一种优秀的语言。而且,在某些方面,它在“现代”互联网上仍然占据着重要的地位。但回到 90 年代,Perl 可能会带来极其多的问题。因为在 90 年代,主机提供商还没有找到正确部署容器化虚拟化环境的方法。(事实上,我 1998 年使用的第一家主机公司是互联网上最早提供虚拟主机服务的公司之一。)

在那个“糟糕的日子”里,大多数共享主机提供商只提供两种选择:

  1. 您可以将完全静态的 HTML 文件上传到他们的共享主机环境中,从而创建一个完全静态的网站。

  2. 或者你可以创建由 Perl 驱动的动态代码,它会在cgi-bin……中执行。但是,在你的代码部署之前,你必须按小时向主机提供商支付代码审查费,之后他们才会允许你将其上传到你的文件cgi-bin夹。(这种繁琐且昂贵的限制完全可以理解。因为他们没有虚拟化工具来正确地将你的网站与其他共享主机上的网站“隔离”起来。所以,如果你编写了一些非常糟糕的代码,你不仅会破坏你自己的网站,还会破坏共享主机目录中的所有其他网站。)

因此……借助虚拟化技术,PHP 可能成为第一个面向大众、易于创建动态网页的编程语言。因为一旦虚拟化技术站稳脚跟,许多注册第一个虚拟主机环境的用户发现,“服务器”已经预装了 PHP(以及 MySQL 的雏形)。

我知道,如果严格按照字面时间线来看,Perl 的确比 PHP 早出现——而且早了不少。但我坚决认为,PHP 是第一个真正意义上的“互联网”语言,它促进了动态 HTML 的广泛应用。换句话说:最早的“脚本小子”们并非从 Perl 起步,而是从 PHP 开始接触编程。

于是我一头扎了进去。不知怎么的……我居然成功了。我写了一大堆极其尴尬的代码。但不知怎么的,我当时设法让一切都“运行”了起来。

超越 PHP

当然,互联网一直在不断发展。随着互联网的发展,PHP 对任何“真正的”程序员来说都更像是一个令人尴尬的配角。我们有了 JSP(说实话,它本身就是一团糟)。我们有了 JavaScript——但当时的 JavaScript 几乎没什么用处。我们又有了其他服务器端脚本工具,比如(早已消亡的)ColdFusion。最终,我们甚至发展到了可以编写“真正”的企业级应用程序的地步,先是用 Java,然后是用 C#——这足以让那些自命不凡的面向对象编程(OOP)拥趸们点头称赞。但在此过程中,一件有趣的事情发生了。PHP 从未真正消失它只是……徘徊在业余程序员的阴影里——拒绝消亡,却也拒绝真正地发展。

即使是PHP的铁杆粉丝,恐怕也会承认,PHP的持久生命力很大程度上要归功于WordPress。WordPress团队选择了PHP——而这一机缘巧合的决定,也让PHP在Web开发史上占据了不可撼动的地位。不管那些“真正的”程序员是否愿意承认这一点。

我们都看过相关的网络统计数据来佐证这一点。任何时候,都有数量惊人的公共网站使用 PHP 运行。当然,业内人士都明白,这些统计数据被博客作者和其他业余人士的网站严重拉高了比例,因为这些网站从技术上讲也是使用 PHP 运行的(因为它们是用 WordPress 搭建的)——即便这些网站的站长(没错……还记得这个词吗?)根本不懂 PHP 代码。

个人进化

鉴于我(资历深厚的)从业经历,你大概也能猜到,我也早已“进化”过了 PHP。我先后转向了 ColdFusion/MS-SQL、Java/Oracle、ASP/C#/MS-SQL,以及 jQuery/Knockout/Angular/React。和大多数在应用开发领域“长期耕耘”的人一样,我涉猎了各种各样的技术——即便我仍在努力精通其中任何一项。

但我从未真正放弃过PHP。几十年来,它一直安装在我的本地机器上。我很少因为写 PHP 代码而获得报酬——因为说实话,大多数 PHP 相关的工作薪水都不高。(我愿意年薪 5 万美元去当 WordPress 管理员吗?呃……当然不愿意。)但对于我经常想在家编写一些简单的实用代码来说,PHP 一直是一个不可或缺的工具。即使我越来越专注于前端开发,我仍然经常会用到 PHP,因为它能快速便捷地搭建后端 API。

PHP的耻辱

虽然我闲暇时间还会写点 PHP 代码,但我早就知道,PHP 开发最好还是藏在心里,别声张。你可以写 PHP,但最好只在家里,一个人,拉上窗帘。而且,千万别告诉任何人你其实会写 PHP(而且——天哪!——还乐在其中)。这简直就是软件开发界的色情片。确实有很多人在写 PHP,但如果你想被真正的开发者认可和尊重,最好还是把这事儿藏在心里。

最近我在求职过程中遇到的两件事让我更加深刻地体会到了这一点。

  1. 我当时正在面试一个 React 开发职位,需要通过屏幕共享进行编程测试,公司两位资深开发人员在一旁观察我的操作。他们给我指示后,我打开了我的 IDE——JetBrains 的 PHPStorm。其中一位开发人员立刻惊呼:“ PHP Storm???”他的语气好像我刚刚提议直接用粪便把他们的编程测试答案写在屏幕上似的。

    他的反应其实很荒谬。我根本不会用 PHP他们的编程测试答案,也不会用 PHP运行我写好的代码。我只是用了一个名字里带“PHP”的 IDE 而已。就因为这个,他就觉得毛骨悚然了。 (如果你好奇的话:我付费购买了全套 JetBrains 软件,其实我可以打开Webstorm,那样的话面试官应该会更高兴。但我本地没有配置 Webstorm,而且面试的时候时间很紧。)

    他们最终没有录用我。

  2. 我当时正在完成一个编程作业,要求五花八门,远超一般“合格”长度的编程作业。尽管如此,我还是完成了整个作业。它包含一个 React 前端,需要用到身份验证、拖放、GraphQL、会话管理等等……一大堆乱七八糟的东西,远远超出任何一个理智的雇主对编程评估的要求。但我还是完成了。我满足了所有要求。

    提交代码一段时间后,我才知道他们不喜欢我的作业,因为我用 PHP 构建了后端 API。他们的要求里根本没说应该用什么工具来构建 API。他们没说我必须使用特定的技术栈。他们也没说我不能用 PHP。他们只是说我必须包含一个 GraphQL API。而我做到了……用 PHP。我用 PHP 是因为这是我用本地工具快速搭建 API 的最简单方法。我用 PHP 开发是因为我已经投入了大量时间在前端功能上,只需要一个能用的后端就行了。然而……他们不喜欢我用 PHP 来构建这个简单演示应用的后端。

    他们没有给我提供工作机会。

其实这一切并没有让我感到特别惊讶。多年来我一直都知道,在和那些资深软件工程师——那些真正从事相关工作的工程师——交流时,哪怕只是提到PHP,都会成为一个棘手的问题。你可能正和一群资深程序员聊得热火朝天,彼此相处融洽,但只要你一不小心说出“PHP”这个词,所有人都会用那种尴尬的眼神看着你,仿佛你刚刚跟他们开了个低俗的玩笑。

(名副其实的)恶名

如果这听起来像是在为这门语言辩护,请相信我,并非如此。我接触 PHP 的时间足够长,几乎把它当成了我的孩子。我的孩子又丑又胖,学习成绩一塌糊涂,多年来一直做着毫无前途的工作,还多次触犯法律。你依然爱你的孩子,依然希望它一切都好。但到了某个时候,即使是最虔诚的父母也不得不承认,他们的孩子也出现了一些……问题

PHP 3.x 版本当时还处于实验阶段,难以进行评价。而且,如今大多数程序员甚至从未真正接触过PHP 3.x 的安装环境。

现在看来,4.x 版本简直是一场灾难。这门语言饱受诟病,很大程度上都源于 4.x 版本。魔法般的全局变量、糟糕的数据库结构、相互冲突的库、不一致的语法……所有这些缺点都暴露无遗,一目了然。

5.x 版本确实逐步改进了这门语言。诚然,5.x 版本的开发过程过于漫长,PHP 的候选发布社区似乎也一度陷入停滞。但他们最终还是走出了困境。

7.x 版本……真的非常棒。没错,我就是这么说的。你们想笑就笑吧。他们是不是已经解决了这门语言中所有潜在的问题?当然没有。但哪门语言没有一些开发者抓狂的小毛病呢?不过总的来说,我真的挺……喜欢用 PHP 7.x 写后端功能的。

当然,很多对 PHP 的批评并非直接来自语言本身,而是来自与其相关的社区。具体来说,许多 PHP 的反对者都对 WordPress 上大量业余爱好者和浅尝辄止者感到失望。WordPress 本身可能就是个极其复杂的编程工具。再加上那些周末程序员,他们只是想为孩子的足球联赛搭建一个简单的网站,结果却搞砸了,嗯……你就会遇到一些非常业余的作品。而这些作品往往会被一概而论地贴上 PHP 的标签。

JavaScript 代码羞辱者的讽刺之处

总会有人(非理性地)热爱他们选择的语言,同时(非理性地)憎恨选择的语言。我理解这一点。这种态度和编程本身一样古老。但我还是忍不住注意到,JavaScript 程序员瞧不起 PHP 这件事本身就充满了讽刺意味。

在 JavaScript 诞生的最初十多年里,它几乎只是个编程玩具。你几乎无法用它任何有价值的事情。即使你最终弄明白了如何用它创造出有意义的东西,大多数“真正的”程序员也完全不屑一顾。多年来,“JavaScript 程序员”这个称谓本身就自相矛盾,就像“巨型虾”或“富有同情心的保守派”一样。

如今,看到许多 JavaScript 开发者对 PHP 表现出如此明显的傲慢和蔑视,真是令人啼笑皆非。他们显然对编程历史一无所知,更谈不上什么讽刺。坦白说,我觉得他们根本不在乎。过去十年间,JavaScript 社区的精英主义倾向日益明显,这一点在他们对待 PHP 的整体态度上体现得淋漓尽致。我遇到的 JavaScript 开发者中,很少有人真正理解这种矛盾之处:一方面,JavaScript 社区试图将 PHP 视为某种“低人一等”的技术;另一方面,他们又表现得好像 JavaScript 某种程度上“更胜一筹”。

暗影中的编码

那么,PHP 开发者的“答案”是什么呢?遗憾的是,我并不清楚是否存在什么有效的解决方案。试图改变成千上万JS /Java/C#/Python 等语言开发者的态度几乎是不可能的。任何从根本上提升 PHP “社会地位”的机会可能早已错失。当然,我并不是建议你放弃PHP。它(在某些工作中)是一个很棒的工具。拥有这样一个工具本身并没有错。但是……你最好把它藏在某个隐蔽的角落,以免被人发现。

文章来源:https://dev.to/bytebodger/the-snobby-demonization-of-php-4fae