For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
PHP团队刚刚宣布PHP 8正式GA。
下载地址:#/downloads
PHP 8.0.0是最新的主要版本,它引入了一些重大变更,以及许多新特性和性能改进,下边简单介绍一些亮点:
JIT,Just-In-Time,即时编译
最重大的特性非JIT莫属。该特性的研发历时多年,熬过了PHP 5与7大版本系列(PHP 6项目流产),直到去年3月份才最终通过投票确认将进入PHP 8。
JIT是一种编译器策略,它将代码表述为一种中间状态,在运行时将其转换为依赖于体系结构的机器码,并即时执行。在PHP中,这意味着JIT将为Zend VM生成的指令视为中间表述,并以依赖于体系结构的机器码执行,也就是说托管代码的不再是Zend VM,而是更为底层的CPU。
虽然自PHP 7.0以来,通过优化核心数据结构HashTable、强化Zend VM中某些操作码与持续改进OPCache的Optimizer组件等具体措施,PHP性能得到了显著提升,但是实际上这些优化似乎已经走到极限了。现在JIT从底层着手,被认为是目前提升PHP性能的最佳出路。
关于引入JIT后的性能对比(以及PHP 8整体性能),可以参考一下Phoronix的基准测试(注:用的是5月底的源码构建版进行的测试)。
Union Types,联合类型
Union Types支持接收多个不同类型的值,它是两种或多种类型的集合,使用时可以选择其一。包括PHP在内的开源生态的标准库中使用联合类型非常普遍,PHP支持联合类型,将会允许将更多类型信息从phpdoc迁移至函数签名。可以说,泛型之后,联合类型是目前类型声明系统中最大的突破口。
Attributes,注解
这里的Attributes也就是其它语言中的annotations(注解),它提供了一种向类添加元数据的方法,无需解析文档块。
新的static返回类型
虽然已经可以返回self,但是考虑到PHP具有动态类型的性质,PHP 8中支持static返回类型将更加高效,对于许多开发者来说应当非常有用。
class Foo
{
public function test(): static
{
return new static();
}
}
WeakMap,弱映射
WeakMaps允许创建从对象到任意值的映射(类似SplObjectStorage),而不会阻止对用作key的对象进行垃圾回收。只要将对象添加到WeakMap中,GC在触发条件时就可以将其占用内存回收。
PHP 7.4中,实际上已经引入了对WeakReference(弱引用)的支持。但是,原始的弱引用本身用途有限,而弱映射在实践中更为常用。由于没有提供注册销毁回调的功能,因此无法在PHP弱引用之上实现有效的弱映射。弱映射的一般用例是将数据与单个对象实例相关联,而不强迫它们保持活动状态,避免长时间运行的进程无谓地占用内存。
class Foo
{
private WeakMap $cache;
public function getSomethingWithCaching(object $obj): object
{
return $this->cache[$obj]
??= $this->computeSomethingExpensive($obj);
}
}
关于WeakMap/WeakReference,可以参考这一篇的WeakRef部分,虽然讲的是JS,但原理是相通的:
#/news/106670/what-s-new-in-javascript-google-io-2019
更多的相关特性可以查看:
#/index.php#id2020-06-25-1
#/rfc
https://github.com/php/php-src/blob/master/UPGRADING
#/archive.html(Derick Rethans的博客,他是PHP核心贡献者,也是PHP 7.4的release manager)
需要注意的是,PHP 8是一个重大更新版本,带了一些重大变更,所以最好查看UPGRADING文档的相关事项。不过实际上,其中许多重大变更在之前的7.*版本中已经引入,因此,如果你一直保持最新版本,那么升级到PHP 8也影响不大。
PHP 8中JIT主要贡献者鸟哥@Laruence曾发表相关文章讲述JIT的研发历程,感兴趣可以瞧瞧:写在PHP 8发布之前的话。
选择的人多的机构就是好机构,达内每年近10万学员的选择,来达内给你一个不一样的培训体验。达内目前开设24大课程体系,Java编程、UI设计、网络营销、web前端培训等课程。达内每月开设免费课程试听训练营,欢迎来电预约免费试听,领取免费课程资料。来合肥PHP培训,让你的人生有不一样的精彩。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!