1. 数组扩展操作符改进
数组扩展操作符(`...`)现在支持在数组字面量中展开任意数量的可遍历对象或数组。
php
$array1 = [1, 2];
$array2 = [3, 4];
$result = [...$array1, ...$array2]; // [1, 2, 3, 4]
2. 字符串函数改进
新增了几个字符串处理函数,包括 `str_starts_with`、`str_ends_with` 和 `str_contains`,提高了字符串操作的便捷性。
php
if (str_starts_with($string, 'prefix')) {
// 处理以 'prefix' 开头的字符串
}
3. 类型系统增强
引入了 `never` 返回类型,表示函数永远不会返回(例如总是抛出异常或终止脚本)。
php
function throwError(string $message): never {
throw new Exception($message);
}
4. 闭包捕获改进
闭包现在可以更灵活地捕获变量,支持按值捕获引用变量。
php
$value = 1;
$ref = &$value;
$closure = fn() => $ref; // 捕获引用
$closure = fn() use ($ref) => $ref; // 捕获值
5. 属性语法优化
属性(Attributes)的语法更加简洁,支持更多参数类型。
php
#[Route(path: '/users', methods: ['GET'])]
public function getUsers() { /* ... */ }
6. 错误处理改进
增强了类型错误处理,特别是在参数类型不匹配时提供更精确的错误信息。
7. 性能优化
对 JIT 编译器进行了优化,提高了部分代码的执行效率。
8. 其他改进
- 新增 `enum` 类型支持,提供更强大的枚举功能
- 改进了 `match` 表达式的类型推断
- 增强了反射 API,提供更多元数据访问能力
这些新特性进一步提升了 PHP 的表达力、安全性和性能,使开发者能够编写更简洁、高效的代码。