PHP 7.4 新特性

PHP 7.4 新特性 首页 / PHP7+入门教程 / PHP 7.4 新特性

PHP 7.4是PHP的最新稳定版本。它于2019年11月28日发布,是 PHP 8 之前的最新版本。它带来了许多新函数,语法添加和修复。在这篇文章中,您将找到一个列表,其中包含所有新增和更改的内容,以帮助您准备升级。让无涯教程从PHP 7.4中的一些要点开始:

New features

PHP 7.4带有大量新函数。将从所有新函数的列表开始,然后查看更改和不推荐使用的内容。

不过,在开始之前,请注意:如果您仍在使用较低版本的PHP, 您还需要阅读PHP 7.3中的新函数

# Arrow functions rfc

箭头函数也称为"短闭包",它允许较少冗长的单行函数。

虽然您之前已经写过:

array_map(function (User $user) { 
    return $user->id; 
}, $users)

您现在可以这样写:

array_map(fn (User $user) => $user->id, $users)

# 类型属性 rfc

类变量可以用类型提示:

class A
{
    public string $name;
    
    public ?Foo $foo;
}

# Improved type variance rfc

但简而言之:您将可以使用协变返回类型–

class ParentType {}
class ChildType extends ParentType {}

class A
{
    public function covariantReturnTypes(): ParentType
    { /* … */ }
}

class B extends A
{
    public function covariantReturnTypes(): ChildType
    { /* … */ }
}

# 空合并分配运算符 rfc

接下来是空合并分配运算符,它是空合并操作的简写。而不是这样做:

$data['date'] = $data['date'] ?? new DateTime();

你可以这样做:

$data['date'] ??= new DateTime();

# 数组扩展运算符 rfc

接下来,现在可以在数组中使用散布运算符:

$arrayA = [1, 2, 3];

$arrayB = [4, 5];

$result = [0, ...$arrayA, ...$arrayB, 6 ,7];

// [0, 1, 2, 3, 4, 5, 6, 7]

请注意,这仅适用于带有数字键的数组。

# 数值分隔符 rfc

PHP 7.4允许使用下划线在视觉上分隔数字值。 看起来像这样:

$unformattedNumber = 107925284.88;

$formattedNumber = 107_925_284.88;

下划线仅被引擎忽略。

# 三元运算符弃用 rfc

 该RFC为嵌套三元语句添加了弃用警告。 在PHP 8中,此弃用将转换为编译时错误。

1 ? 2 : 3 ? 4 : 5;   // deprecated
(1 ? 2 : 3) ? 4 : 5; // ok

# 串联优先 rfc

如果您要编写这样的内容:

echo "sum: " . $a + $b;

PHP以前会这样解释它:

echo ("sum: " . $a) + $b;

PHP 8将使其如此解释:

echo "sum: " . ($a + $b);

当遇到在 + -符号之前的包含的未括号表达式时,PHP 7.4添加了弃用警告。

# 无效的数组访问警告 rfc

如果要对一个整数使用数组访问语法; PHP以前会返回 null 。 从PHP 7.4开始,将发出通知。

$i = 1;

$i[0]; // Notice

strip_tags 接受数组

您过去只能剥离多个标签,如下所示:

strip_tags($string, '<a><p>')

PHP 7.4还允许使用数组:

strip_tags($string, ['a', 'p'])

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

技术与商业案例解读 -〔徐飞〕

从0开始学大数据 -〔李智慧〕

Kafka核心技术与实战 -〔胡夕〕

网络编程实战 -〔盛延敏〕

JavaScript核心原理解析 -〔周爱民〕

技术管理案例课 -〔许健〕

爱上跑步 -〔钱亮〕

PyTorch深度学习实战 -〔方远〕

计算机基础实战课 -〔彭东〕

好记忆不如烂笔头。留下您的足迹吧 :)