当前位置: 首页 > 后端技术 > PHP

PHP7.4新特性_0

时间:2023-03-29 16:29:55 PHP

PHP7.4计划于2019年11月21日发布,主要新增以下特性:短闭包函数(shortclosure)预加载提交性能属性类型限制改进类型变异(无翻译)三元运算缩写数组展开操作类新增魔术方法:序列号分隔符操作优先级允许在__toString中抛出异常支持反射引用新增字节分割功能去除php短标签放弃左结合操作短闭包功能可以减少冗余代码:array_map(function(User$user){return$user->id;},$users)array_map(fn(User$user)=>$user->id,$users)注意几点:短闭包可以直接访问闭包函数外的变量,所以不用写use关键字以fn关键字开头。$this可以像普通闭包一样使用包使用一个只有一行代码的短闭包,它只用于返回声明,不允许使用return关键字。您还可以使用更严格的类型$ids=array_map(fn(User$user):int=>$user->id,$user);PreloadingPHP预加载可以大大提高性能。优点:在PHP7.4之前,如果使用框架开发,每一个请求文件都要加载重新编译。预加载在框架启动时将文件加载到内存中,并在后续请求中持续存在。缺点:性能提升是以其他方面为代价的,每次预加载文件更改时都需要重新启动框架。属性类型仅限于A类{publicstring$name;publicFoo$foo;}不得不说PHP越来越接近Java等强类型语言改进类型变协变返回类型:classParentType{}classChildTypeextendsParentType{}classA{publicfunctioncovariantReturnTypes():ParentType{/*…*/}}classBextendsA{publicfunctioncovariantReturnTypes():ChildType{/*…*/}}依赖(是不是很熟悉):classParentType{}classChildTypeextendsParentType{}classA{publicfunctioncovariantReturnTypes():ParentType{/*…*/}}classBextendsA{publicfunctioncovariantReturnTypes():ChildType{/*…*/}}current>PHP7和更高版本中的速记三元运算符:$数据['日期']=$数据['日期']??新的日期时间();在PHP7.4中你可以这样写:$data['date']??=newDateTime();数组展开操作将数组合并为另一个数组,返回一维数组$arrayA=[1,2,3];$arrayB=[4,5];$result=[0,...$arrayA,...$arrayB,6,7];//[0,1,2,3,4,5,6,7]注意:只对数字索引有效新增类RFC的magic方法新增了两个magic__serialize和__unserialize数字分隔符方法允许使用下划线更直观地分隔值$unformattedNumber=107925284.88;$formattedNumber=107_925_284.88;Operationpriority在PHP7.4之前,如果你这样写:echo"sum:"。$a+$b;PHP将被解析为:echo("sum:".$a)+$b;PHP8将被解析为:echo"sum:"。($a+$b);__toString中抛出的异常支持反射引用PHP7.4将添加ReflectionReference类以删除php短标记