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 是可以的

 

參考資料:
PHP RFC: Nullsafe operator
PHP 8: the nullsafe operator
SPATIE - Front Line PHP

sharkHead

PHP 與 Python 菜雞工程師,覺得前端有趣,但是無奈沒有慧根
目前沒有任何評論~