Apabila menulis kod dalam PHP, kita sering melihat mesej ralat ini: "Notis PHP: Undefined property: stdClass::$". Mesej ralat ini biasanya disebabkan apabila sifat objek tidak wujud semasa menggunakannya. Dalam artikel ini, kita akan membincangkan cara menyelesaikan masalah ini.
Pertama sekali, kita perlu memahami sebab mesej ralat ini. Apabila kita menggunakan sifat sesuatu objek, PHP mula-mula menyemak sama ada harta itu wujud. Jika harta itu tidak wujud, mesej ralat "Notis PHP: Harta tidak ditentukan: stdClass::$" akan dilemparkan. Ini biasanya berlaku apabila:
Ralat ini berlaku jika kita cuba mengakses sifat objek yang tidak wujud. Contohnya:
$student = new stdClass(); echo $student->name; // undefined property error
kerana atribut $student
tidak ditakrifkan semasa mencipta objek $name
. Untuk menyelesaikan masalah ini, kita perlu mentakrifkan atribut ini dahulu:
$student = new stdClass(); $student->name = 'John'; echo $student->name; // John
Satu lagi masalah biasa ialah salah ejaan. Walaupun kita mentakrifkan sifat semasa mencipta objek, jika kita membuat kesilapan ejaan semasa menggunakan sifat, kita akan melihat mesej ralat ini. Contohnya:
$student = new stdClass(); $student->name = 'John'; echo $student->Name; // undefined property error
kerana Name
dan name
ialah nama atribut yang berbeza. Untuk menyelesaikan masalah ini, kita perlu memastikan bahawa kita menggunakan nama sifat yang betul semasa mengakses harta:
$student = new stdClass(); $student->name = 'John'; echo $student->name; // John
3. Sifat objek adalah peribadi
Jika sifat objek adalah peribadi, ia tidak boleh boleh diakses dari luar mereka. Contohnya:
class Student { private $name = 'John'; } $student = new Student(); echo $student->name; // undefined property error
Di sini kami cuba mengakses harta $name
tetapi ia adalah peribadi jadi ia tidak boleh diakses dari luar. Untuk menyelesaikan masalah ini, kita boleh mentakrifkan kaedah awam dalam kelas untuk mengakses harta persendirian:
class Student { private $name = 'John'; public function getName() { return $this->name; } } $student = new Student(); echo $student->getName(); // John
Di sini kita mentakrifkan kaedah getName()
untuk mengembalikan nilai harta persendirian $name
, supaya ia boleh diakses di luar objek mengaksesnya.
Dalam pengekodan harian, kita perlu mengelakkan kesilapan seperti ini dengan memastikan atribut wujud dan dieja dengan betul semasa mentakrifkan kelas dan objek kita Pada masa yang sama, kita perlu berhati-hati apabila mengisytiharkan kebenaran pada atribut. Tetapi walaupun kami mengikuti semua amalan terbaik, kami kadangkala dapat melihat mesej ralat ini. Apabila kami melihat mesej ralat ini, kami harus menyemak semula kod kami untuk mengesahkan bahawa kami telah menentukan sifat dengan betul dan menggunakan nama sifat yang betul.
Atas ialah kandungan terperinci Penyelesaian kepada Notis PHP: Undefined property: stdClass::$. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!