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

标量类型声明

在定义类名、接口、数组和回调类型时可以声明类型。可以使用下列类型参数:string、int、float、bool
返回值也可以声明类型

允许为空(Nullable)类型

PHP7.1.0起,类型声明允许前置一个问号(?)用来声明这个值允许为指定类型,或为null

  1. <?
  2. class C {}
  3. function f(?C $c) {
  4. var_dump($c);
  5. }
  6. f(new C);
  7. f(null);

null合并运算符 ??

如果变量存在且不为null,就会返回自身的值,否则返回第二个操作数

  1. <?
  2. $user = $_GET['user'] ?? 'nobody';
  3. // 等于
  4. $user = isset($_GET['user']) ? $_GET['user'] : 'nobody';

太空船操作符<=>

比较两个表达式。返回-1、0、1

  1. <?
  2. echo 1 <=> 1; // 0
  3. echo 1 <=> 2; // -1
  4. echo 2 <=> 1; // 1

通过define()定义常量数组

PHP5.6中只能通过const定义(只能定义boolean、integer、float和string
PHP5.6之后,可以将常量定义成一个表达式,也可以定义为一个array,还可以定义resource

  1. <?
  2. //php < 5.6.0
  3. const ABC = "abc";
  4. // 5.6.0 之后
  5. const ABCD = ABC . "d";
  6. const ABCDE = array("a", "b");
  7. // php 7
  8. define('ANI',array(
  9. 'a',
  10. 'n',
  11. 'i'
  12. ));