Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah Pengendali Nullsafe PHP (?-) Dapat Menghalang Pengecualian Penunjuk Null?

Bagaimanakah Pengendali Nullsafe PHP (?-) Dapat Menghalang Pengecualian Penunjuk Null?

Patricia Arquette
Patricia Arquetteasal
2024-12-19 07:07:26669semak imbas

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

Nullsafe Operator dalam PHP: Mencapai Navigasi Objek Bersyarat

Dalam PHP, mengakses sifat objek dan kaedah panggilan berpotensi mengakibatkan pengecualian penuding nol jika objek adalah batal atau tidak mempunyai ahli yang diminta. Untuk menangani isu ini, pengendali nullsafe (?-) yang diperkenalkan dalam PHP 8 membolehkan navigasi selamat sifat dan kaedah objek.

Pertimbangkan pernyataan berikut:

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

Pernyataan ini menyemak sama ada $data objek mempunyai sifat getMyObject() dan jika ia tidak batal. Jika harta itu wujud dan tidak batal, ia meneruskan untuk mengakses sifat getName() dalam objek itu. Walau bagaimanapun, jika harta itu tidak wujud atau batal, penyata tidak akan diteruskan.

Menggunakan pengendali nullsafe, kita boleh menulis semula penyataan sebagai:

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

Dalam penyata ini , jika $data adalah null atau tidak mempunyai sifat getMyObject(), rantai pengendali ditamatkan dan null dikembalikan. Ini membolehkan kami mengendalikan sifat yang hilang atau panggilan kaedah dengan anggun tanpa pengecualian.

Pengendali nullsafe berfungsi dengan pengendali berikut yang mengakses sifat dan kaedah objek:

  • Akses tatasusunan ([]) : $data?->[0]
  • Akses harta benda (->): $data?->name
  • Akses harta nullsafe (?->): $data?->name
  • Akses harta statik (::): Ibu bapa::nama
  • Panggilan kaedah (->): $data->getName()
  • Panggilan kaedah Nullsafe (?->): $data?->getName()
  • Panggilan kaedah statik (::): Induk::getName()

Sebagai contoh, kod di bawah:

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

sama dengan:

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

jika $data ialah null.

Dengan menggunakan operator nullsafe, kami boleh menulis kod yang lebih bersih dan ringkas sambil memastikan ketiadaan pengecualian penuding nol.

Atas ialah kandungan terperinci Bagaimanakah Pengendali Nullsafe PHP (?-) Dapat Menghalang Pengecualian Penunjuk Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn