PHP 8 是 PHP 语言的重要里程碑,引入了 JIT 编译器和众多语法改进。
命名参数
// PHP 8 之前
array_fill(0, 100, 50);
// PHP 8 之后
array_fill(start_index: 0, count: 100, value: 50);
联合类型
function parseValue(string|int $input): float
{
return (float) $input;
}
Match 表达式
// 替代 switch
$result = match($status) {
'pending' => '待处理',
'approved' => '已通过',
'rejected' => '已拒绝',
default => '未知状态',
};
Nullsafe 运算符
// PHP 8 之前
$country = null;
if ($session !== null) {
$user = $session->user;
if ($user !== null) {
$address = $user->getAddress();
if ($address !== null) {
$country = $address->country;
}
}
}
// PHP 8 之后
$country = $session?->user?->getAddress()?->country;
构造函数属性提升
class User
{
public function __construct(
public string $name,
public string $email,
public ?string $phone = null,
) {}
}
// 等价于
class User
{
public string $name;
public string $email;
public ?string $phone;
public function __construct(string $name, string $email, ?string $phone = null)
{
$this->name = $name;
$this->email = $email;
$this->phone = $phone;
}
}
JIT 编译器
PHP 8 引入了 JIT(Just In Time)编译器,可以将热点代码编译为机器码执行:
opcache.enable=1
opcache.jit_buffer_size=100M
opcache.jit=tracing
JIT 对于计算密集型任务(如图像处理、数学运算)有显著性能提升。
Attributes(注解)
#[Route('/users', methods: ['GET'])]
class UserController
{
#[Inject]
private UserRepository $repository;
}