$ids = array_map(fn($post) => $post->id, $posts);
Null coalescing operator
空兼并运算符,它相似于三元运算符,但左边的操作数行为相似于 isset,而不是仅运用其布尔值。这使得此运算符对数组特别有用。它同时可在未设置变量时分配默许值。
$undefined ?? 'fallback'; // 'fallback'
$unassigned;
$unassigned ?? 'fallback'; // 'fallback'
$assigned = 'foo';
$assigned ?? 'fallback'; // 'foo'
'' ?? 'fallback'; // ''
'foo' ?? 'fallback'; // 'foo'
'0' ?? 'fallback'; // '0'
0 ?? 'fallback'; // 0
false ?? 'fallback'; // false
Traits
Trait 是一种重用代码的机制,它可以增加单承袭的某些限制。Traits 与类组合的语义定义了降低复杂性的方式,并避免了与多重承袭和 Mixins 相关的典型成绩。
Trait 相似于类,但仅用于以细粒度和分歧的方式对函数停止分组,它是对传统承袭的补充,可以完成行为的横向组合,类成员运用不需求承袭。
<?php
trait ezcReflectionReturnInfo {
function getReturnType() { /*1*/ }
function getReturnDescription() { /*2*/ }
}
class ezcReflectionMethod extends ReflectionMethod {
use ezcReflectionReturnInfo;
/* ... */
}
class ezcReflectionFunction extends ReflectionFunction {
use ezcReflectionReturnInfo;
/* ... */
}
?>
Typed properties
属性类型化,类变量可以定义类型,比如:
class A
{
public string $name;
public Foo $foo;
}
Spread operator
扩展运算符,这是一种新语法,可以直接在调用中解紧缩参数,比如:
call_user_func_array([$db, 'query'], array_merge(array($query), $params));
直接用新语法可扩展出数组 $params:
$db->query($query, ...$params);
JIT compiler:PHP 8 确认支持 JIT
JIT 是一种编译器策略,它将代码表述为一种中间形状,在运转时将其转换为依赖于体系结构的机器码,并即时执行。在 PHP 中,这意味着 JIT 将为 Zend VM 生成的指令视为中间表述,并以依赖于体系结构的机器码执行,也就是说托管代码的不再是 Zend VM,而是更为底层的 CPU。
FFI
(责任编辑:admin)