Skip to main content

php8.x 常用新特性

· One min read
Singi Qin
maintainer

php8.0

命名参数

  • 仅仅指定必填参数,跳过可选参数。
  • 参数的顺序无关、自己就是文档(self-documented)

php7

htmlspecialchars($string, ENT_COMPAT | ENT_HTML401, 'UTF-8', false);

php8

htmlspecialchars($string, double_encode: false);

Match 表达式

  • Match 是一个表达式,它可以储存到变量中亦可以直接返回。
  • Match 分支仅支持单行,它不需要一个 break; 语句。
  • Match 使用严格比较。

php7

switch (8.0) {
case '8.0':
$result = "Oh no!";
break;
case 8.0:
$result = "This is what I expected";
break;
}
echo $result;
//> Oh no!

php8

echo match (8.0) {
'8.0' => "Oh no!",
8.0 => "This is what I expected",
};

Nullsafe 运算符

现在可以用新的 nullsafe 运算符链式调用,而不需要条件检查 null。 如果链条中的一个元素失败了,整个链条会中止并认定为 Null。

php7

$country =  null;
if ($session !== null) {
$user = $session->user;
if ($user !== null) {
$address = $user->getAddress();

if ($address !== null) {
$country = $address->country;
}
}
}

php8

$country = $session?->user?->getAddress()?->country;