请选择 进入手机版 | 继续访问电脑版

影子论坛

搜索
查看: 3055|回复: 0

[php] PHP7.4.0新特性

[复制链接]

417

主题

716

帖子

3938

积分

管理员

积分
3938
发表于 2019-12-2 11:05:17 | 显示全部楼层 |阅读模式
PHP 7.4.0 发布了,此版本标志着 PHP 7 系列的第四次特性更新。
PHP 7.4.0 进行了许多改进,并带来了一些新特性,包括:
Typed Properties  类型属性
类属性现在支持类型声明,以下示例将强制 $User-> id 只能分配 int 值,而 $User-> name 只能分配 string 值。
  1. <?php
  2. class User {
  3.     public int $id;
  4.     public string $name;
  5. }
  6. ?>
复制代码
Arrow Functions  箭头函数
箭头函数提供了用于定义具有隐式按值作用域绑定的函数的简写语法。
  1. <?php
  2. $factor = 10;
  3. $nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
  4. // $nums = array(10, 20, 30, 40);
  5. ?>
复制代码

将闭包传递给 array_map 或 array_filter 等函数时,它可以发挥极大的作用。
  1. // A collection of Post objects $posts = [/* … */];

  2. $ids = array_map(fn($post) => $post->id, $posts);
复制代码

Limited Return Type Covariance and Argument Type Contravariance  有限返回类型协变与参数类型逆变
仅当使用自动加载时,才提供完全协变/逆变支持。在单个文件中,只能使用非循环类型引用,因为所有类在被引用之前都必须可用。
  1. <?php
  2. class A {}
  3. class B extends A {}

  4. class Producer {
  5.     public function method(): A {}
  6. }
  7. class ChildProducer extends Producer {
  8.     public function method(): B {}
  9. }
  10. ?>
复制代码

Unpacking Inside Arrays  打包内部数组
  1. <?php
  2. $parts = ['apple', 'pear'];
  3. $fruits = ['banana', 'orange', ...$parts, 'watermelon'];
  4. // ['banana', 'orange', 'apple', 'pear', 'watermelon'];
  5. ?>
复制代码

Numeric Literal Separator  数值文字分隔符
数字文字可以在数字之间包含下划线。
  1. <?php
  2. 6.674_083e-11; // float
  3. 299_792_458;   // decimal
  4. 0xCAFE_F00D;   // hexadecimal
  5. 0b0101_1111;   // binary
  6. ?>
复制代码

Weak References  弱引用
弱引用使程序员可以保留对对象的引用,不会阻止对象被销毁。
Allow Exceptions from __toString()  允许从 __toString() 抛出异常
现在允许从 __toString() 引发异常,以往这会导致致命错误,字符串转换中现有的可恢复致命错误已转换为 Error 异常。
Opcache Preloading  Opcache 预加载
新增 Opcache 预加载支持。
此外还有一些弃用,以及从核心中删除一些扩展,详情查看:

评分

参与人数 1disk -8 收起 理由
admin -8 很给力!

查看全部评分

影子论坛是一个高度自由简约的资源共享平台
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表