PHP7.4 上月 28 号已宣布了。又带来了一些新特征。可以让我们的代码写的更少了

作者: 健隆 分类: 烟台网站制作资讯 发布时间: 2020-07-18 10:17

PHP7.4 上月 28 号已宣布了。又带来了一些新特征。可以让我们的代码写的更少了。

1. 属性添加限制类型

1

2

3

4

5

6

7

8

9

10

<?php

class User {

  public int $age;

  public string $name

$user new User();

$user->age = 10;

$user->name = "张三";

//error

$user->age = "zhang";//需求传递int

2. 箭头函数

这个特征基本上参考 Js 的 ES6 的语法。可以让我们的代码写的更少。假如你的代码有 fn 这个函数。能够会抵触

1

2

3

4

5

6

7

<?php

$factor = 10;

$nums array_map(fn($n)=>$n $factor,[1,2,3]);//[10,20,30]

//之前的写法

$nums array_map(function($num)use($factor){

  return $num $factor;

},[1,2,3])

3. 无限前往类型协变与参数类型逆变

仅当利用主动加载时,才供应完整协变 / 逆变支撑。在单个文件中,只能利用非轮回类型援用,由于一切类在被援用之前都必需可用。

1

2

3

4

5

6

7

8

9

10

<?php

class A {}

class extends A {}

class Producer {

    public function method(): A {}

}

class ChildProducer extends Producer {

    public function method(): B {}

}

?>

4. 数组解包

利用睁开运算符... 解包数组。这个特征,应当又是从 js 那接收过去的。看例子

1

2

3

4

5

<?php

$parts = ['apple''pear'];

$fruits = ['banana''orange', ...$parts'watermelon'];//['banana', 'orange', 'apple', 'pear', 'watermelon'];

//老的写法

$fruits array_merge(['banana''orange'],$parts,['watermelon']);

5. 空归并运算符赋值

1

2

3

4

5

6

7

<?php

$array['key'] ??= computeDefault();

// 老的写法

if (!isset($array['key'])) {

    $array['key'] = computeDefault();

}

?>

6. 数值文字分隔符

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

1

2

3

4

5

6

<?php

6.674_083e-11; // float

299_792_458;   // decimal

0xCAFE_F00D;   // hexadecimal

0b0101_1111;   // binary

?>

7. 答应从 __toString () 抛出异常

如今答应从 __toString() 激发异常,以往这会致使致命毛病,字符串转换中现有的可恢复致命毛病已转换为 Error 异常。

 

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!