Rumah > Artikel > pembangunan bahagian belakang > Penyelesaian kepada Notis PHP: Harta yang tidak ditentukan:
Penyelesaian kepada Notis PHP: Sifat tidak ditentukan:
Apabila menggunakan PHP untuk membangunkan aplikasi web, anda sering menghadapi mesej ralat Notis PHP: Sifat tidak ditentukan:, iaitu tahap amaran biasa dalam Ralat PHP, biasanya menggesa bahawa atribut itu tidak wujud. Artikel ini akan menerangkan punca ralat ini dan cara membetulkannya.
1. Sebab ralat
Notis PHP: Harta tidak ditentukan: Ia disebabkan oleh fakta bahawa apabila mengakses nilai harta objek, harta itu tidak ditakrifkan atau tidak wujud. Contohnya:
<?php class Person{ public $name; public $age; } $person = new Person(); echo $person->gender; // Undefined property: Person::$gender ?>
Dalam contoh di atas, kami mencipta objek kelas Orang $orang, yang mempunyai dua atribut $nama dan $umur, tetapi apabila kami cuba mengakses atribut $jantina, kami akan A Notis mesej ralat tahap muncul.
2. Penyelesaian
Untuk menyelesaikan ralat sifat Tidak ditentukan, anda perlu melakukan aspek berikut:
2.1 Semak sama ada nama pembolehubah adalah betul
Pertama sekali, kita perlu menyemak sama ada sifat objek yang dipanggil adalah betul. Sebagai contoh, kami ingin mengakses harta $gender dalam contoh di atas, tetapi sebenarnya kelas Person tidak mentakrifkan sifat ini, jadi mesej ralat "Harta tidak ditentukan: Person::$gender" akan muncul. Oleh itu, pendekatan yang betul adalah untuk melihat atribut yang telah ditakrifkan dalam kelas dan memilih nama atribut yang betul untuk diakses.
2.2 Cipta dan tentukan sifat
Jika terdapat akses kepada sifat yang tidak ditentukan, kita perlu menambah harta itu pada kelas dan menentukan nilai lalainya. Contohnya:
<?php class Person{ public $name; public $age; public $gender = 'unknown'; } $person = new Person(); echo $person->gender; //输出:unknown ?>
Dalam contoh ini, kami telah menambahkan atribut $gender dan menetapkan nilai lalainya kepada 'unknown', supaya ralat sifat Undefined tidak akan berlaku apabila mengakses atribut $gender.
2.3 Gunakan kaedah ajaib __get()
Kaedah ajaib __get() boleh menangkap dan mengendalikan ralat apabila cuba mengakses sifat yang tidak ditentukan. Contohnya:
<?php class Person{ public $name; public $age; private $properties = []; public function __get($property_name){ return isset($this->properties[$property_name])?$this->properties[$property_name]:null; } public function __set($property_name, $value){ $this->properties[$property_name] = $value; } } $person = new Person(); $person->gender = 'unknown'; echo $person->gender; //输出:unknown ?>
Dalam contoh di atas, kami menambah tatasusunan $properties baharu dan mencari dalam kaedah __get() untuk melihat sama ada nama harta yang diakses wujud dalam tatasusunan dan jika ya, kembalikan harta tersebut nilai nama, jika tidak null dikembalikan. Dalam kaedah __set(), simpan nama atribut dan nilai atribut yang ditetapkan dalam tatasusunan $properties. Dengan cara ini, apabila kita cuba mengakses harta $gender objek $person, kaedah __get() secara automatik akan menangkap dan mengembalikan null, sekali gus mengelakkan ralat sifat Undefined.
Ringkasnya, kami boleh menyelesaikan Notis PHP: Undefined property: mesej ralat melalui tiga kaedah di atas. Sama ada menyemak nama pembolehubah, mencipta dan mentakrifkan sifat, atau menggunakan kaedah __get(), kita harus menulis kod dengan sikap yang teliti untuk mengelakkan ralat yang disebabkan oleh ralat ejaan atau sifat yang tidak ditentukan.
Atas ialah kandungan terperinci Penyelesaian kepada Notis PHP: Harta yang tidak ditentukan:. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!