PHP 5 6 7 8 9 各重要版本开发特性和选择简要说明

PHP开发,所用版本的选型

PHP5.4是最后一个支持纯正32位操作系统的版本,在Winxp下仍可使用。

PHP5.6是php5.x的最后一个稳定版本,时至今天,仍有很多用户网站系统在使用,网上仍有很多学习资料是基于这个版本,大量的第三方(旧版本)项目也能在这版本运行,系统硬件需求和资源占用相对也比较低。

网上称PHP为最好的语言,说得也就是这个版本(php5.x)。从好的方面看,因为这个版本对新手学习友好,老手用起来感觉自由无拘束,其它语言转过来的人也因它使用操作简单,能快速生产web项目制作,应用于对性能不敏感的项目。运维也简单,硬件要求低,配置简单,可以不停服实现更新,无需重启机器就能实现即时代码修改和重新部署应用。很少内存泄漏,代码稳定后,项目长期挂在外网也不用重启 。(个人认为)php业务层逻辑代码无所谓技术含量,也无需加密,随便写,随便改,commit代码就能马上看到效果。内置函数也强大,如:实现读写文本的功能PHP只需要用file_get/put_contents就能搞定,而Java,C#需要new好几个对象,再加while循环才能全部读取。(这是我写过 Java,C#,php,golang,nodejs,python 代码后得出的结论 )。只是后面的PHP版本,越搞越来越臃肿,语法也开始朝着复杂繁锁的方向发展。

PHP7 引入了变量强制类型定义,并优化脚本编译,在性能上有5%至25%的提升,但接口变化较大,同时也是一个不太稳定版本。会时而遇到开发调试问题。性能也被后面php8JIT超越。(另外,MS在php8起,不再提供php for windows的官方支持,因为大多数用户都把windows当作php的开发和调试环境,甚至调试时都没挂在IIS上,开发者在正式环境上布署php应用大部分都选择Linux。因此在IIS上运行php最稳定的版本是php7)

PHP8.0至8.3版本,加入JIT编译,是Php7优化版,性能上对比7有5%至15%以上的提升。在代码上,带强类型定义的代码在8下执行速度较快。若是像php5那样的定义无类型的变量,也可以执行,但性能提升较少。

从Php8.4版开始,其编译PHP会生成中间字节码IR(可以简单理解为:编译生成 能适配通用型CPU运行、体积增大的opcode),其IR节码有点像Java、C#那样,意图实现全平台复用。但首次访问系统时会产生编译耗时,会有短暂的卡顿,各平台优化能力有待验证和提升,各种扩展适配IR的稳定性还有待观察。(与7.3类似)它是一个为php9作预演的白鼠过渡版本。

PHP 9 完善编译字节IR的适应性稳定性和多功能性,写的代码显得越来越臃肿。和7,8一样,可能要叠代几个版本才能稳定下来。

按实际情况,版本使用建议如下:

● 需求有32位(嵌入式)微机系统,或用作VM虚拟盘,嵌入Docker时尽量极省资源,用php5.4。

(如果你希望 nginx, mysl , php,甚至docker ,全都安装在一台最便宜的云服务器上,且还能相对流畅地跑起来,应用在一些闲余时间额外开发项目,只要维护方便也无所谓开源闭源,可以考滤使用此版本。)

● 希望兼容性好,网上学习资料多。更期望项目系统的稳定、易测试、易维护,易布署,用php5.6,体系成熟,布署简单,资源占用低(可以用作替代5.4的项目)。

● 希望使用性能已经最优化的,成熟稳定的php版本,目前用 php8.3 (2025),这是适配特定平台下最优JIT编译。( 即便是 PHP5时期的代码,无须加入强类型,也能直接在8.3下运行,遇到异常,修改源码就行了)

● 后面更高的PHP版本,估计接口会有持续的小变化,性能还要不断优化,要两三年后才能稳定下来。

● 不建议使用Php8.4,生成的opcode还在beta中,后面也会被PHP9所代替。

相关推荐
雪风飞舞19 分钟前
python根据音频生成柱状图
开发语言·python·音视频
nbsaas-boot27 分钟前
slice / map 在 Go GC 与内存碎片上的真实成本
开发语言·后端·golang
会飞的小新38 分钟前
Shell 脚本中的信号与 trap:从 Ctrl+C 到优雅退出
linux·开发语言
LawrenceLan41 分钟前
Flutter 零基础入门(十):final、const 与不可变数据
开发语言·flutter·dart
源代码•宸1 小时前
Leetcode—1266. 访问所有点的最小时间【简单】
开发语言·后端·算法·leetcode·职场和发展·golang
遇见~未来1 小时前
JavaScript数组全解析:从本质到高级技巧
开发语言·前端·javascript
南屿欣风1 小时前
Sentinel 熔断规则 - 异常比例(order & product 示例)笔记
java·开发语言
u0104058361 小时前
使用Java实现高性能的异步编程:CompletableFuture与Reactive Streams
java·开发语言
朔北之忘 Clancy1 小时前
2020 年 6 月青少年软编等考 C 语言二级真题解析
c语言·开发语言·c++·学习·青少年编程·题解·尺取法
消失的旧时光-19432 小时前
C++ 中的 auto 与 nullptr:不是语法糖,而是类型系统升级
开发语言·c++