PHP 8 中的新特性 (五), Nullsafe operator

程式技術
sharkHead

首先從官網 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;

只要 $sessionnull,後面的呼叫就不會繼續執行。使用起來跟 Null coalescing operator 很像,也就是 ?? 運算子

// 當 $propertyOne 不為 null,返回 $propertyOne ,否則返回 $propertyTwo
$result = $propertyOne ?? $propertyTwo;

但是 ?? 運算子無法使用方法呼叫,Nullsafe operator 是可以的。

參考資料

sharkHead
written by
sharkHead

後端打工仔,在下班後喜歡研究各種不同的技術。稍微擅長 PHP,並偶爾涉獵前端開發。個性就像動態語言般隨興,但渴望做事能像囉嗦的靜態語言那樣嚴謹。

0 則留言