“最好的语言“ 25 岁了,PHP说要走向安全和开放!
梅宁航 发自 凹非寺
量子位 报道 | 公众号 QbitAI
今年 4 月,随着PHP 7.4.5 正式发布,宣告PHP诞生25年,作为一门饱受争议的编程语言,PHP 经历了什么,又准备如何解决历史遗留问题?
PHP 主要使用场景是前端开发,并且被视为 WordPress 的“标准语言”,但 PHP 公认的问题是安全性和较为混乱的开发环境配置。
就在最近,一场围绕PHP的讨论,在程序员聚集的HackerNews展开,要点如下。
正方: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的维护中。
在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,极大减少了开发者的维护难度。
不出意外的话,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 算法,这是多年密码学哈希算法竞赛的冠军,也许是为表明对安全性的重视。
你认为PHP能否继续在前端开发中保持热度呢?
欢迎在留言区分享你的看法~
参考链接:
https://lwn.net/SubscriberLink/818973/507f4b5e09ab9870/
https://news.ycombinator.com/item?id=23077367
作者系网易新闻·网易号“各有态度”签约作者
— 完 —
如何关注、学习、用好人工智能?
每个工作日,量子位AI内参精选全球科技和研究最新动态,汇总新技术、新产品和新应用,梳理当日最热行业趋势和政策,搜索有价值的论文、教程、研究等。
同时,AI内参群为大家提供了交流和分享的平台,更好地满足大家获取AI资讯、学习AI技术的需求。扫码即可订阅:
了解AI发展现状,抓住行业发展机遇
AI社群 | 与优秀的人交流
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
喜欢就点「在看」吧 !