1,标量类型声明和返回值类型声明
在函数参数和返回值中指定期望的数据类型,包括(int,float,string,bool)。
举例:
function addNumbers(int $a, int $b) : int {return $a + $b;
}var_dump(addNumbers(5, 10)); // 输出 int(15)
var_dump(addNumbers("5", "10")); // 由于类型不匹配,会抛出错误
2,Spaceship 运算符|太空舱运算符(<=>)
这是一个新的组合比较运算符,用于比较两个表达式的大小关系,返回 -1、0 或 1,使得排序更加方便。
举例:
var_dump(1 <=> 1); // 输出 int(0)
var_dump(1 <=> 2); // 输出 int(-1)
var_dump(2 <=> 1); // 输出 int(1)
3,Null 合并运算符(??)
用于简化对 null 值的判断和处理,如果变量为 null,则返回默认值。
举例:
$name = $_GET['name'] ?? 'Guest';
echo $name; // 如果 $_GET['name'] 存在,则输出其值,否则输出 'Guest'
4,常量数组定义
允许通过 define() 函数定义常量数组,这使得可以定义不可变的数组常量。
举例:
define('FRUITS', ['apple','banana','orange',
]);
var_dump(FRUITS);
// 输出 array(3) { [0]=> string(5) "apple" [1]=> string(6) "banana" [2]=> string(6) "orange" }
5,匿名类
PHP 7 支持在运行时创建匿名类,这使得编写更简洁的代码成为可能
举例:
$class = new class {public function welcome() {echo "Hello, world!";}
};$class->welcome(); // 输出 "Hello, world!"
6,引入了严格模式开关
- PHP 是一个弱类型的语言,不过在 PHP 7 中支持变量类型的定义,引入了一个开关指令
declare(strict_type=1);
。这个指令一旦开启,就会强制当前文件下的程序遵循严格的函数传参类型和返回类型。不开启 strict_type,PHP 将会尝试转换成要求的类型;开启之后,PHP 不再做类型转换,类型不匹配就会抛出错误。- 要使用严格模式,一个 declare 声明指令必须放在文件的顶部。这意味着严格声明标量是基于文件可配的。这个指令不仅影响参数的类型声明,还影响函数的返回值声明。
7,改进错误处理机制
- PHP 7 引入了 Throwable 接口,它是所有错误和异常的基础接口。Throwable 接口代表可以被抛出的任何对象,包括 Error 和 Exception。
举例:
function divide(int $a, int $b) : float {if ($b === 0) {throw new Exception("Division by zero");}return $a / $b;
}try {var_dump(divide(10, 0));
} catch (Throwable $t) {echo "Error: " . $t->getMessage(); // 输出 "Error: Division by zero"
}