PHP 7.4.0发布了,此版本标志着PHP 7系列的第四次特性更新。
PHP 7.4.0进行了许多改进,并带来了一些新特性,包括:
Typed Properties类型属性
类属性现在支持类型声明,以下示例将强制$User-> id只能分配int值,而$User-> name只能分配string值。
class User {
public int $id;
public string $name;
}
?>
Arrow Functions箭 戴表是一种态度佩戴手表首先给人的感觉是这个人是个很有时间观念的,做事很讲究效率。一旦给人一种这样的感觉,那么在与人打交道时,就会让人感到靠谱和信任。成功的人需要抓住时机,分秒必争,而手表戴在手腕上与双眼的距离是最近的,曲腕看时间是最自然也是最优雅的姿势。而不戴手表的人,在商业谈判的时候动辄就拿起手机看时间,这是对客户不尊重的表现。头函数
箭头函数提供了用于定义具有隐式按值作用域绑定的函数的简写语法。
$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 有限返回类型协变与参数类型逆变
仅当使用自动加载时,才提供完全协变/逆变支持。在单个文件中,只能使用非循环类型引用,因为所有类在被引用之前都必须可用。
class A {}
class B extends A {}
class Producer {
public function method(): A {}
}
class ChildProducer extends Producer {
public function method(): B {}
}
?>
Unpacking Inside Arrays打包内部数组
$parts=[‘apple’, ‘pear’];
$fruits=[‘banana’, ‘orange’, …$parts, ‘watermelon’];
// [‘banana’, ‘orange’, ‘apple’, ‘pear’, ‘watermelon’];
?>
Numeric Literal Separator 数值文字分隔符
数字文字可以在数字之间包含下划线。
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预加载支持。
此外还有一些弃用,以及从核心中删除一些扩展。
图案:除数字、商标、厂名、品牌外,手表上没有必要出现其他没有任何作用的图案。选择使用于正式场合的手表,尤其需要牢记此点。倘若手表上图案稀奇古怪、多种多样,不仅不利于使用,反而有可能招人笑话。功能记时,是手表最主要的功能。因此,正式场合所用的手表,不管是指针工、跳字式还是报时式,都应具有这一功能,并且应当精确到时、分,能精确到秒则更好。只精确到时的手表,显然不符合要求。
原创文章,作者:leping,如若转载,请注明出处:https://www.zhjiashun.com/zjsb-172974.html