Penyelesaian kepada ralat PHP: Mencuba memanggil kaedah bukan objek
Semasa proses pembangunan menggunakan PHP, kami sering menghadapi beberapa mesej ralat, salah satunya ialah "cuba memanggil kaedah bukan objek". Ralat ini bermakna apabila kita cuba memanggil kaedah, objek yang digunakan bukanlah objek undang-undang. Artikel ini akan memperkenalkan beberapa punca dan penyelesaian biasa untuk membantu anda menyelesaikan masalah ini.
Sebab biasa ialah kami tidak memulakan objek dengan betul sebelum memanggil kaedah. Sebagai contoh, selepas membuat seketika kelas, kita terlupa untuk menggunakan kata kunci "baru" untuk mencipta tika objek. Oleh itu, apabila memanggil kaedah objek, ralat akan dilaporkan.
Berikut ialah contoh kod:
class Example{ public function test(){ echo "调用成功!"; } } $example = Example; // 错误的初始化方式,忘记了关键字“new” $example->test(); // 报错:尝试调用非对象的方法
Menyelesaikan masalah ini hanya memerlukan penambahan kata kunci "baharu" semasa membuat seketika objek. Kod yang dibaiki adalah seperti berikut:
class Example{ public function test(){ echo "调用成功!"; } } $example = new Example; // 正确的初始化方式 $example->test(); // 正常输出:调用成功!
Sebab biasa lain ialah kita tidak membatalkan objek sebelum memanggil kaedah. Jika kita cuba memanggil kaedah pada objek yang batal, ralat akan dilaporkan.
Berikut ialah contoh kod:
class Example{ public function test(){ echo "调用成功!"; } } $example = null; $example->test(); // 报错:尝试调用非对象的方法
Untuk menyelesaikan masalah ini, anda hanya perlu menambah syarat nol sebelum memanggil kaedah. Kod tetap kelihatan seperti ini:
class Example{ public function test(){ echo "调用成功!"; } } $example = null; if($example != null){ $example->test(); // 不会报错,因为已经进行了判空处理 }
Situasi lain ialah apabila kita cuba memanggil kaedah, objek yang digunakan bukan jenis yang kita harapkan. Dalam kes ini, kami biasanya menggunakan semakan jenis untuk mengelakkan ralat ini.
Berikut ialah contoh kod:
class Example{ public function test(){ echo "调用成功!"; } } $str = "Hello World"; $str->test(); // 报错:尝试调用非对象的方法
Dalam contoh ini, kita sebenarnya ingin memanggil kaedah objek, tetapi kita menggunakan rentetan sebaliknya. Untuk menyelesaikan masalah ini, kami boleh menggunakan pemeriksaan jenis untuk memastikan objek yang kami gunakan adalah jenis yang betul.
Untuk menyelesaikan masalah ini hanya gunakan fungsi is_object() untuk semakan jenis. Kod yang dibaiki adalah seperti berikut:
class Example{ public function test(){ echo "调用成功!"; } } $str = "Hello World"; if(is_object($str)){ $str->test(); // 不会报错,因为已经进行了类型检查 }
Ringkasan:
Semasa proses pembangunan PHP, apabila kita menghadapi ralat "cuba memanggil kaedah bukan objek", kita boleh menyemak dahulu sama ada objek itu dimulakan dengan betul, sama ada ia null, dan merupakan jenis yang betul. Mengguna pakai penyelesaian yang sepadan mengikut situasi tertentu boleh menyelesaikan masalah ini dengan berkesan. Saya harap artikel ini dapat membantu anda menyelesaikan masalah biasa dalam pelaporan ralat PHP dan meningkatkan kecekapan pembangunan.
Atas ialah kandungan terperinci Menyelesaikan ralat PHP: Cuba memanggil kaedah bukan objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!