“最好的语言“ 25 岁了,PHP说要走向安全和开放!

即将开播:5月14日,Jenkins在K8S下的三种部署流程和实战演示

本文经AI新媒体量子位(公众号ID:QbitAI)授权转载,转载请联系出处。

今年 4 月,随着PHP 7.4.5 正式发布,宣告PHP诞生25年,作为一门饱受争议的编程语言,PHP 经历了什么,又准备如何解决历史遗留问题?

PHP 主要使用场景是前端开发,并且被视为 WordPress 的“标准语言”,但 PHP 公认的问题是安全性和较为混乱的开发环境配置。

就在最近,一场围绕PHP的讨论,在程序员聚集的HackerNews展开,要点如下。

“最好的语言“ 25 岁了,PHP说要走向安全和开放!

正方:OOP进化、对外开放和性能提升

面向对象编程(OOP)的理念在PHP 4时代正式引入,但长期带有严重的性能问题,因为实际上是通过一个带有函数引用的数组来进行实现,直到PHP 5进行重构,但也仅仅是勉强堪用,Hacker News一位网友就表示,多数人被劝退就在PHP 5时代。

直到PHP 7的发布,才真正达到可使用的状态,实现了例如函数参数、返回值的类型化以及标量的直接使用。

在PHP 7.4上,加入了键入对象属性的新功能,将这些功能与命名空间,交互接口和可迭代结合在一起,更加强大和易用。

虽然PHP已经25周岁,但并未显现老态,反而更为乐于拥抱外面的世界。

这一趋势在PHP 7.4版本表现的十分明显,明确支持外部语言接口(Foreign Language Interface,FFI)模式,对基于C语言的扩展包开放,允许更多外部扩展包参与到PHP的编程与维护工作中。

在HN的讨论区中,很多人表示希望WordPress增加更多的语言选项,但在可预见的未来,PHP仍将长期使用于WordPress的维护中。

“最好的语言“ 25 岁了,PHP说要走向安全和开放!

在PHP 7.4之前,开发者更习惯于“内置电池”的模式解决问题,好处是编写起来简单易懂,但代价是项目会随着开发者的更换和语言的进化逐渐变得难以维护,向其他语言开放有助于解决这一问题。

PHP 7.4每秒处理的请求数量是PHP 5.6的三倍,甚至比PHP 7.0快约18%。

此外值得一提的是预加载能力的提升,开发者可以使用opcache.preload配置指令,并指定PHP脚本的路径可以很容易地启用这一模式。

该脚本中引用的所有类和函数将被永久加载到内存中,并根据需要在每个服务器请求中进行引用。

此外,预加载模式下的每个请求的资源是可复用的,因此可降低请求时间。

当然,这也意味着如果要更改配置内容必须重启服务器。

反方:生态割裂和安全隐忧

长期以来,PHP的社区生态是割裂的。

拥有PEAR和PECL两种包管理器,并且同时被官方支持,因为二者分别由C语言和PHP实现,造成了更严重的不兼容问题。

并且,由于PHP的更新迭代,年代久远的包的维护和更新已经成为了大问题,HN的讨论热点就主要集中在PHP的维护上,而非新项目的开发。

出于可维护性的考虑,从PHP 7.4开始,官方不建议再使用PEAR,PHP推出自己的包管理器,官方称其为Composer,使用方式非常接近于Python的pip和Node的npm,极大减少了开发者的维护难度。

“最好的语言“ 25 岁了,PHP说要走向安全和开放!

不出意外的话,PHP 7.X会陪伴我们很长时间,据消息,PHP 8.0的alpha版本会在6月份释出,现存的PHP的bug会在 8.X时代修复,主要更新会集中在安全上。

实际上,PHP最为人诟病的是安全性问题,无论是否赞成PHP是世界上最好的语言,但大多数前端开发者都承认PHP的安全性较差。

而在PHP 5.4时代官方移除safe_mode,更是劝退了大波开发者,在意识到问题后,PHP重新支持这一模式。

虽然有所反复,但总归是好事一桩。近期的PHP开始使用Argon2 password-hashing 算法,这是多年密码学哈希算法竞赛的冠军,也许是为表明对安全性的重视。

相关推荐