PHP 8.0.0 Released!
https://www.php.net/archive/2020.php#2020-11-26-3
https://www.php.net/archive/2020.php#2020-11-26-3
PHP8 的专题页
当然如果说 python 的 gevent 这种与多进程用起来像的协程(提供了 fork/join ),
那么 php7 确实还没有。
而 swoole 的协程是抄了 golang 的 channel,又是另一种协程了。
php 协程缺乏应用场景,需要 php 协程的公司为什么不选择 go 呢,没有历史包袱的天生支持。
拿 php 写常驻内存 service,需要更好的内存管理,php 现在的 gc 实现简陋,引用计数也不太容易支持多线程,搞不好还得来一个全局解释器锁。
看了一个多小时才看明白,感觉就像,鸟哥在 php5 里面用 yield 生成器,造了个单片机非抢占式多任务系统,php 玩出了操作系统的味道,膜拜鸟哥!
个人比较关注语言方面的:
联合类型、错误类型统一、命名参数,PHP 终于和主流语言接轨了
注解这个真的是 Web 开发的福音
在我的帖子在 https://www.v2ex.com/t/603272
@leonidas
看了一下 PHP 8 的 Match Expression,这个设计不错,不知道是否支持 Sealed Class 类似的 Class 匹配,有用过的回复一下。Java 中的实现直接复用 Switch,到最新的 15 还不支持 Sealed Class 。
Attributes (或者 Java 中 Annotations )将原来的 Doctrine 中使用 Attribuite 直接标准化,辅助说明从 Comments 中直到放到代码上,语法更接近 C#,这算得上语法上的一次革命,不错。这个过程类似于 Java 中使用 Doclet (用过 Hibernate1.x 2.x 基本都是用过的 ) 到 Java 5 Annotations 。
JIT 不用说了,大杀器,但这个不属于语言语法范围。
竟然有中文版,官方有心了!
但是如果自己的业务项目,完全可以跟进最新的 Java 版本,甚至可以使用一个 CI 来检测当前版本至最新的 ea 版本兼容性,代码可以一直持续跟进新语法。