PHP 7.4.0 发布了,此版本标志着 PHP 7 系列的第四次特性更新。php
PHP 7.4.0 进行了许多改进,并带来了一些新特性,包括:程序员
Typed Properties 类型属性数组
类属性如今支持类型声明,如下示例将强制 $User-> id 只能分配 int 值,而 $User-> name 只能分配 string 值。闭包
<?php
class User {
public int $id;
public string $name;
}
?>
复制代码
Arrow Functions 箭头函数app
箭头函数提供了用于定义具备隐式按值做用域绑定的函数的简写语法。ide
<?php
$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
// $nums = array(10, 20, 30, 40);
?>
复制代码
将闭包传递给 array_map 或 array_filter 等函数时,它能够发挥极大的做用。函数
// A collection of Post objects $posts = [/* … */];
$ids = array_map(fn($post) => $post->id, $posts);
复制代码
Limited Return Type Covariance and Argument Type Contravariance 有限返回类型协变与参数类型逆变post
仅当使用自动加载时,才提供彻底协变/逆变支持。在单个文件中,只能使用非循环类型引用,由于全部类在被引用以前都必须可用。ui
<?php
class A {}
class B extends A {}
class Producer {
public function method(): A {}
}
class ChildProducer extends Producer {
public function method(): B {}
}
?>
复制代码
Unpacking Inside Arrays 打包内部数组spa
<?php
$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
// ['banana', 'orange', 'apple', 'pear', 'watermelon'];
?>
复制代码
Numeric Literal Separator 数值文字分隔符
数字文字能够在数字之间包含下划线。
<?php
6.674_083e-11; // float
299_792_458; // decimal
0xCAFE_F00D; // hexadecimal
0b0101_1111; // binary
?>
复制代码
Weak References 弱引用
弱引用使程序员能够保留对对象的引用,不会阻止对象被销毁。
Allow Exceptions from __toString() 容许从 __toString() 抛出异常
如今容许从 __toString() 引起异常,以往这会致使致命错误,字符串转换中现有的可恢复致命错误已转换为 Error 异常。
Opcache Preloading Opcache 预加载
新增 Opcache 预加载支持。
此外还有一些弃用,以及从核心中删除一些扩展,详情查看: