首頁 >後端開發 >php教程 >PHP 的 Nullsafe 運算子可以簡化巢狀屬性存取嗎?

PHP 的 Nullsafe 運算子可以簡化巢狀屬性存取嗎?

Barbara Streisand
Barbara Streisand原創
2024-12-14 04:58:09364瀏覽

Can PHP's Nullsafe Operator Simplify Nested Property Access?

PHP 中引入Nullsafe 運算子

Nullsafe 運算子(?->) 允許開發人員編寫安全存取物件屬性和方法而不需要顯式的空檢查。這簡化了程式碼並增強了可讀性,尤其是在複雜的物件層次結構中。

查詢

我們可以使用 nullsafe 運算子重寫以下語句嗎?

echo $data->getMyObject() != null ? $data->getMyObject()->getName() : '';

回答

來自從PHP 8 開始,我們可以將nullsafe 運算子與null 合併運算子(?) 結合使用來實現所需的行為。

echo $data->getMyObject()?->getName() ?? '';

? ->運算子在遇到 null 值時會中斷運算子鏈,有效地傳回 null 並終止表達式。檢查物件屬性或呼叫方法的運算子被視為鏈的一部分,包括:

  • 陣列存取([])、屬性存取(->)、nullsafe 屬性存取(?->) 、靜態屬性存取(::)、方法呼叫(->)、nullsafe 方法呼叫(?->)和靜態方法呼叫(::)

此外,如果鏈中的後續運算子不被視為鏈的一部分(例如,下面範例中的串聯運算符),它們將不會被短路:

$string = $data?->getObject()->getName() . " after";

在這種情況下,如果$data 為null,則代碼將導致:

$string = null . " after";

以上是PHP 的 Nullsafe 運算子可以簡化巢狀屬性存取嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn