最近,PHP官网刚刚发布了7.4版本,新增了类型声明,箭头函数,数值分割等新特性,以及弃用了一些方法,下面做一下简单的介绍及说明。

类型属性

在PHP7之后,对PHP弱类型有了些改进,使用注解的方法,对类属性进行声明,在最近发布的PHP7.4版本中,新增了类型属性。

以前的写法:

class User

{

/**

* @var int

*/

public $id;

/**

* @var string

*/

public $name;

}

7.4新特性,$user->id必须是int,name必须是string:

class User

{

public int $id;

public string $name;

}

箭头函数,短闭包$factor = 10;

$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);

// $nums = array(10, 20, 30, 40);

对比以前的写法,是不是要简单许多:

$factor = 10;

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

return $num * $factor;

}, [1, 2, 3, 4]);

有限返回类型协变与参数类型逆变

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

class A {}

class B extends A {}

class Producer {

public function method(): A {}

}

class ChildProducer extends Producer {

public function method(): B {}

}

打包内部数组

可能听到这个说法一脸懵逼,上一下代码就明白了:

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

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

// ['banana', 'orange', 'apple', 'pear', 'watermelon'];

原来就是数组组合起来

空合并分配运算符$array['key'] ??= computeDefault();

等价于以前的方式:

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

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

}

数值文字分隔符

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

$val = 6.674_083e-11; // float

$val = 299_792_458; // decimal

$val = 0xCAFE_F00D; // hexadecimal

$val = 0b0101_1111; // binary

允许从 __toString() 抛出异常

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

Opcache 预加载

新增 Opcache 预加载支持。

不推荐的语法

没有括号的三元运算,当然,不论在何种语言上,在没有括号的嵌套的三元运算符,都是不建议的//不推荐

1 ? 2 : 3 ? 4 : 5;

//建议

(1 ? 2 : 3) ? 4 : 5;

1 ? 2 : (3 ? 4 : 5);

(real)和is_real()

(real) 替换为 (float)

is_real() 替换为 is_float()

allow_url_include

不推荐使用allow_url_include ini指令

array_key_exists

不建议在对象上使用 array_key_exists() 。 相反,应该使用 isset() 或 property_exists()。

令人期待的php7.4,PHP7.4新特性相关推荐

  1. php7.0 yield,PHP7中生成器的新特性 yield-from amp;amp; return-values

    生成器委托 简单地翻译官方文档的描述: PHP7中,通过生成器委托(yield from),可以将其他生成器.可迭代的对象.数组委托给外层生成器.外层的生成器会先顺序 yield 委托出来的值,然后继 ...

  2. PHP7都有哪些新特性

    前言 本文是一篇讲座听后+后续研究的总结.  话说当年追时髦,php7一出就给电脑立马装上了,php5和php7共存,也是立马写了个超级耗时间的循环脚本测了一番,确实php7给力很多,然后也是注意了一 ...

  3. php7 最新版本,总结PHP 7.x 各个版本的新特性

    推荐(免费):PHP7 PHP 7.x 各个版本的新特性 前言 上个月同事看见我写$a = $a ?? ''; 问我这个写法是什么,还有这样的写法?我说这是PHP7以上才有的写法,你不知道吗?他说不知 ...

  4. php7 参数类型限定,PHP 7.2新特性:参数类型声明(附代码)

    php7.2版本具有新特性,功能和改进,可以让我们编写更好的代码,下面的文章中我将介绍php7.2中的一个新的功能:参数类型声明,话不多说,让我们来具体看看正文内容. 参数类型声明 从PHP 5开始, ...

  5. php v5.,PHP V5.3 中的新特性,第 5 部分- 从 PHP V5.2 升级到 PHP V5.3

    PHP V5.3 中的新特性,第 5 部分: 从PHP V5.2 升级到 PHP V5.3 1 2 3 4 5 下一页 PHP V5.3 将于不久后发布."PHP V5.3 中的新特性&qu ...

  6. PHP 7.x 各个版本的新特性

    PHP 7.x 各个版本的新特性 点赞在看,养成习惯. 前言 上个月同事看见我写 $a = $a ?? ''; 问我这个写法是什么,还有这样的写法?我说这是PHP7以上才有的写法,你不知道吗?他说不知 ...

  7. PHP7新特性 What will be in PHP 7/PHPNG

    来源:http://blog.csdn.net/hguisu/article/details/45094079/ 本文结合php官网和鸟哥相关文章总结: 官网:http://www.php7.ca/  ...

  8. php7.1函数,PHP7.1常用新特性和函数

    在php7发布了之后,官方又紧接着发布了php7.1.php7.2,我们也接着使用了新版本.接下来就说说7.1有那些新的特性. Nullable types 在7的时候,如果使用了强类型就必须传递或者 ...

  9. 浅谈php7的重大新特性_PHP7的新特性和源码结构

    一.PHP7的新特性 返回值类型声明 类型声明有两种模式: 弱类型校验模式(默认):当传入的参数不符合声明类型时,会首先尝试转换类型. 严格类型校验模式:当传入的参数不符合声明类型时,直接报错. 声明 ...

最新文章

  1. 同时起两个mysql 起不了_到底是谁!让你在冬天的早晨起不了床?
  2. 批量修改table和index 的表空间
  3. 以太坊智能合约开发:让合约接受转账
  4. 【面试系列】之一:关于Cmd和Amd
  5. lua 访问oracle,lua语言数据库访问 - Lua教程
  6. 推荐的Oracle书籍
  7. 会议指南二维码生成_包装和准备技术会议的指南
  8. 我正在运行哪个版本的PostgreSQL?
  9. java随机生成昵称
  10. CouchBase简单介绍
  11. vue综合项目——悦听音乐播放器
  12. 如何在 Excel VBA 中插入行
  13. Android 8.0 - AccountManager之行为变更
  14. Java EE Web开发与项目实战_【手把手】JavaWeb 入门级项目实战 -- 文章发布系统 (第一节)...
  15. sqlplus 命令简单整理
  16. DNS服务器可能不可用,去了解决?
  17. Python在Linux下获取CPU温度、使用率、内存使用率、硬盘使用率
  18. SNG mini项目总结
  19. 【热门主题: 海贼王动漫高清壁纸图集】
  20. Hard Fault 异常错误堆栈分析

热门文章

  1. pc控制iphone的软件_嗑技热点 | 苹果M1芯片:对PC行业的降维打击
  2. Linux socket can例程C++版本
  3. python自助电影售票机_Spring Cloud版——电影售票系统六使用 Spring Cloud Config 统一管理微服务配置...
  4. pucch的uci格式_LTE规范中关于DCI/PDCCH以及UCI/PUCCH写的比较模糊?
  5. HTTP Headers Content-Disposition
  6. python click
  7. midi 音符对应表
  8. nginx ngx_http_index_module(默认初始页)
  9. java hashSet
  10. shell read