Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengelakkan pengecualian penunjuk nol menggunakan Operator Nullsafe dalam PHP8?

Bagaimana untuk mengelakkan pengecualian penunjuk nol menggunakan Operator Nullsafe dalam PHP8?

王林
王林asal
2023-10-16 09:28:521396semak imbas

如何使用PHP8中的Nullsafe Operator避免空指针异常?

Bagaimana untuk mengelakkan pengecualian penuding nol menggunakan Operator Nullsafe dalam PHP8?

Dengan keluaran PHP8, satu ciri baharu yang penting telah diperkenalkan dalam bahasa PHP - pengendali Nullsafe, yang boleh membantu pembangun mengendalikan kod yang mungkin menyebabkan pengecualian penuding nol dengan lebih ringkas dan cekap. Artikel ini akan memperincikan cara menggunakan operator Nullsafe untuk mengelakkan pengecualian penuding nol dan memberikan contoh kod khusus.

Apakah pengecualian penuding nol?
Dalam pengaturcaraan, Pengecualian Penunjuk Null bermaksud apabila mengakses sifat atau kaedah objek, jika objek itu adalah nol, Pengecualian Penunjuk Null akan dilemparkan. Ini adalah ralat biasa yang sering menyebabkan program ranap. Untuk mengelakkan pengecualian ini, PHP8 memperkenalkan pengendali Nullsafe.

Bagaimana untuk menggunakan pengendali Nullsafe?
Pengendali Nullsafe terdiri daripada tanda soal (?) dan simbol anak panah (->) Apabila memanggil sifat atau kaedah sesuatu objek, ia mula-mula menentukan sama ada objek itu adalah batal, ia akan mengembalikan secara langsung . Jika tidak, Pengecualian penunjuk nol dilemparkan jika ia bukan nol, sifat atau kaedah diakses secara normal.

Berikut ialah contoh kod menggunakan operator Nullsafe:

class User {
    private ?string $name;
    
    public function __construct(?string $name) {
        $this->name = $name;
    }
    
    public function getName(): ?string {
        return $this->name;
    }
}

$user = new User('John Doe');
echo $user?->getName();  // 输出:John Doe

$user = new User(null);
echo $user?->getName();  // 输出:null

Dalam kod sampel di atas, kami mentakrifkan kelas Pengguna yang mempunyai sifat $name yang boleh menjadi null dan kaedah getName yang boleh mengembalikan sifat $name . Dengan menggunakan pengendali Nullsafe, kita boleh mengelakkan pengecualian penuding nol apabila mengakses sifat $name.

Dalam contoh pertama, kami mencipta objek Pengguna bukan nol dan mendapatkan nilai atribut $name melalui panggilan $user?->getName(). Oleh kerana objek itu bukan nol, kaedah getName berjaya mengembalikan nilai $name "John Doe" dan mencetaknya.

Dalam contoh kedua, kami mencipta objek Pengguna dengan nilai nol dan mendapatkan nilai atribut $name melalui panggilan $user?->getName() sekali lagi. Memandangkan objek adalah nol, pengendali Nullsafe mengembalikan null secara langsung tanpa menaikkan pengecualian penuding nol, jadi hasil output akhir adalah batal.

Ringkasan:
Pengendali Nullsafe ialah ciri yang sangat praktikal dalam PHP8, yang boleh membantu kami mengendalikan pengecualian penuding nol dengan lebih baik. Sama ada anda mengakses sifat objek atau memanggil kaedah objek, menggunakan pengendali Nullsafe boleh memberikan kod yang lebih selamat dan ringkas. Dalam pembangunan sebenar, kami boleh menggunakan sepenuhnya pengendali Nullsafe untuk meningkatkan kebolehpercayaan dan keteguhan kod.

Nota: Pengendali Nullsafe hanya boleh digunakan dalam PHP8 dan ke atas. Jika projek anda masih menggunakan versi PHP yang lebih lama, disyorkan untuk menaik taraf kepada PHP8 dahulu dan kemudian menggunakan pengendali Nullsafe untuk pembangunan.

Rujukan:

  • Dokumentasi rasmi PHP: https://www.php.net/manual/en/migration80.new-features.php

Atas ialah kandungan terperinci Bagaimana untuk mengelakkan pengecualian penunjuk nol menggunakan Operator Nullsafe dalam PHP8?. 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