首頁 > 後端開發 > php教程 > PHP 的 Nullsafe 運算子 (?-) 如何防止空指標異常?

PHP 的 Nullsafe 運算子 (?-) 如何防止空指標異常?

Patricia Arquette
發布: 2024-12-19 07:07:26
原創
656 人瀏覽過

How Can PHP's Nullsafe Operator (?-) Prevent Null Pointer Exceptions?

PHP 中的Nullsafe 運算子:實作條件物件導覽

在PHP 中,存取物件屬性和呼叫方法可能會導致空指針異常,如果該物件為空或沒有請求的成員。為了解決這個問題,PHP 8 中引入的 nullsafe 運算子 (?-) 可以安全地導航物件屬性和方法。

考慮以下語句:

echo $data->getMyObject() != null ? $data->getMyObject()->getName() : '';
登入後複製

此語句檢查是否$data 物件具有 getMyObject() 屬性,如果它不為 null。如果該屬性存在且不為 null,它將繼續存取該物件內的 getName() 屬性。但是,如果該屬性不存在或為 null,則該語句將不會繼續執行。

使用nullsafe 運算符,我們可以將語句重寫為:

echo $data->getMyObject()?->getName();
登入後複製

在此語句中,如果$data 為null 或不具有getMyObject() 屬性,則運算符鏈終止,並傳回null。這使我們能夠優雅地處理缺少的屬性或方法調用,而不會出現異常。

nullsafe 運算子與下列存取物件屬性和方法的運算子一起使用:

  • 陣列存取([]) : $data?->[0]
  • 屬性存取(->): $data?->name
  • Nullsafe 屬性訪問(?->): $data?->name
  • 靜態屬性存取(::): Parent::name
  • 方法呼叫(->): $data->getName()
  • Nullsafe 方法呼叫(?->): $data?->getName()
  • 靜態方法呼叫(::): Parent::getName()

例如程式碼下面:

$string = $data?->getObject()->getName() . " after";
登入後複製

相當於:

$string = (isset($data) && $data !== null) ? $data->getObject()->getName() . " after" : null;
登入後複製

如果$data 是null.

透過使用nullsafe 運算符,我們可以編寫更乾淨、更簡潔的程式碼,同時確保不出現空指標異常。

以上是PHP 的 Nullsafe 運算子 (?-) 如何防止空指標異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板