PHP 8 中的新特性 (五), Nullsafe operator
首先從官網 Copy 一段範例。
$country = null;
if ($session !== null) {
$user = $session->user;
if ($user !== null) {
$address = $user->getAddress();
if ($address !== null) {
$country = $address->country;
}
}
}
上面的程式碼很常見,我們在呼叫方法或是取得屬性時,通常會需要先確認值是否為 null
。
在 PHP 8 中,你可以把上述程式碼精簡成:
$country = $session?->user?->getAddress()?->country;
只要 $session
為 null
,後面的呼叫就不會繼續執行。使用起來跟 Null coalescing operator 很像,也就是 ??
運算子
// 當 $propertyOne 不為 null,返回 $propertyOne ,否則返回 $propertyTwo
$result = $propertyOne ?? $propertyTwo;
但是 ??
運算子無法使用方法呼叫,Nullsafe operator 是可以的。