PHP版本
root@php-test:~# php -v
PHP 8.5.0RC3 (cli) (built: Oct 27 2025 21:11:25) (NTS)
Copyright (c) The PHP Group
Built by Debian
Zend Engine v4.5.0RC3, Copyright (c) Zend Technologies
with Zend OPcache v8.5.0RC3, Copyright (c), by Zend Technologies
管道操作符
这个新运算符允许你以更符合直觉的“流水线”方式处理数据。对比下面的代码,传统写法需要嵌套函数调用或使用临时变量,而管道操作符让数据流动的方向一目了然。
// PHP 8.5 之前的写法(嵌套调用,阅读不直观)
$result = strtoupper(trim(substr($input, 0, 10)));
// 使用管道操作符的写法(从左到右,逻辑清晰)
$result = $input
|> substr($$, 0, 10) // $$ 代表上一个表达式的结果
|> trim($$)
|> strtoupper($$);
#[\NoDiscard]属性
这个属性可以有效避免因忽略重要返回值而导致的潜在错误。例如,一个创建新用户并返回用户ID的函数,如果调用者忽略了返回值,后续逻辑可能会出错。用 #[\NoDiscard]标记后,PHP 会在编译时发出警告。
#[\NoDiscard]
function createUser(string $name): int {
// ... 创建用户的逻辑
return $newUserId;
}
createUser("Alice"); // 这里会触发警告,提示返回值被忽略
// 如果确实想忽略,可以显式转换为 (void) 来消除警告
(void) createUser("Alice");
array_first() 和 array_last()
这两个新函数提供了比 reset()和 end()更安全的方式来获取数组的首尾元素,因为它们不会影响数组的内部指针。
$users = ['Alice', 'Bob', 'Charlie'];
$first = array_first($users); // 'Alice'
$last = array_last($users); // 'Charlie'
// 关联数组同样适用
$data = ['name' => 'John', 'age' => 30];
echo array_first($data); // 'John'
echo array_last($data); // 30