Home > headlines > body text

PHP 7.4.0 has just been released! Let's take a look at what are the new features

藏色散人
Release: 2019-12-07 18:02:21
forward
5370 people have browsed it

PHP 7.4.0 发布了,此版本标志着 PHP 7 系列的第四次特性更新。

PHP 7.4.0 进行了许多改进,并带来了一些新特性,包括:

1.Typed Properties  类型属性

类属性现在支持类型声明,以下示例将强制 $User-> id 只能分配 int 值,而 $User-> name 只能分配 string 值。

<?php
class User {
    public int $id;
    public string $name;
}
?>
Copy after login

2.Arrow Functions 箭头函数

箭头函数提供了用于定义具有隐式按值作用域绑定的函数的简写语法。

<?php
$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
// $nums = array(10, 20, 30, 40);
?>
Copy after login

将闭包传递给 array_map 或 array_filter 等函数时,它可以发挥极大的作用。

// A collection of Post objects $posts = [/* … */];
$ids = array_map(fn($post) => $post->id, $posts);
Copy after login

3.Limited Return Type Covariance and Argument Type Contravariance 有限返回类型协变与参数类型逆变

仅当使用自动加载时,才提供完全协变/逆变支持。在单个文件中,只能使用非循环类型引用,因为所有类在被引用之前都必须可用。

<?php
class A {}
class B extends A {}
class Producer {
    public function method(): A {}
}
class ChildProducer extends Producer {
    public function method(): B {}
}
?>
Copy after login

4.Unpacking Inside Arrays 打包内部数组

<?php
$parts = [&#39;apple&#39;, &#39;pear&#39;];
$fruits = [&#39;banana&#39;, &#39;orange&#39;, ...$parts, &#39;watermelon&#39;];
// [&#39;banana&#39;, &#39;orange&#39;, &#39;apple&#39;, &#39;pear&#39;, &#39;watermelon&#39;];
?>
Copy after login

5.Numeric Literal Separator 数值文字分隔符

数字文字可以在数字之间包含下划线。

<?php
6.674_083e-11; // float
299_792_458;   // decimal
0xCAFE_F00D;   // hexadecimal
0b0101_1111;   // binary
?>
Copy after login

6.Weak References  弱引用

弱引用使程序员可以保留对对象的引用,不会阻止对象被销毁。

7.Allow Exceptions from __toString()  允许从 __toString() 抛出异常

现在允许从 __toString() 引发异常,以往这会导致致命错误,字符串转换中现有的可恢复致命错误已转换为 Error 异常。

8.Opcache Preloading  Opcache 预加载

新增 Opcache 预加载支持。

此外还有一些弃用,以及从核心中删除一些扩展,详情查看:

https://www.php.net

https://www.php.net/manual/zh/migration74.new-features.php

Related labels:
php
source:oschina.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template