截至2019年10月,php7.4已经发布了几个预览版本,根据发布计划,预计正式版将于12月左右发布。一起看看,php7.4都有哪些变化。
安装教程
新特性
支持定义类属性的类型,例如:
1
2
3
4class User {
public int $id;
public string $name;
}以上声明将强制
id
只能赋值为整数类型,name
属性只能赋值为字符串类型。增加对箭头函数的支持
1
2$factor = 10;
$nums = array_map(fn($num) => $num * $factor, $nums);以上代码相当于:
1
2
3
4$factor = 10;
$nums = array_map(function($num) use($factor){
return $num * $factor;
}, $nums);注意:箭头函数语法包含
fn
,所以fn
已经变成关键字。意味着不能将fn
作为函数名和类名。增加空值合并赋值运算符 “**??=**”
1
2
3
4
5$array['key'] ??= computeDefault();
// 与以下代码等效
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}新增数组内部解包语法“**…**”
1
2
3
4
5$arr1 = [1, 2, 3];
$arr2 = [...$arr1]; //[1, 2, 3]
$arr3 = [0, ...$arr1]; //[0, 1, 2, 3]
$arr4 = array(...$arr1, ...$arr2, 111); //[1, 2, 3, 1, 2, 3, 111]
$arr5 = [...$arr1, ...$arr1]; //[1, 2, 3, 1, 2, 3]支持在数字中增加下划线,以提高代码可读性:
1
2
3$num = 1_000_000_000; // 10亿
$num = 1_0000_0000; // 1亿
$discount = 135_00; // 135元(以分为单位)OPcache支持代码预加载
支持将函数、类加载到内存中,后续每个请求都可以直接调用这些函数和类,可以有效地提高性能。
更详细的信息查看PHP RFC: Preloading。支持在
__toString
中抛出异常
在以前的版本中,在__toString
中抛出异常将会报PHP Fatal error
。从7.4开始,将支持在__toString
中抛出异常。