Rumah > Artikel > pembangunan bahagian belakang > Selesaikan ralat Fatal PHP: Panggil ke fungsi ahli pada ralat bukan objek
Penyelesaian kepada PHP Ralat maut: Panggilan ke fungsi ahli pada ralat bukan objek
Dalam proses pengaturcaraan PHP, kita sering menghadapi pelbagai ralat. Salah satu daripadanya ialah "Ralat maut: Panggilan ke fungsi ahli pada bukan objek". Ralat ini biasanya bermaksud bahawa kami memanggil fungsi ahli pada bukan objek, menyebabkan program ranap. Artikel ini membincangkan punca dan penyelesaian kepada ralat ini, dan menyediakan beberapa contoh kod praktikal.
Ralat ini biasanya berlaku apabila kita cuba memanggil fungsi ahli, tetapi objek yang dipanggil sebenarnya bukan objek. Sebagai contoh, kod berikut akan menyebabkan ralat ini:
class MyClass { public function myMethod() { echo "Hello, World!"; } } $myObject = null; $myObject->myMethod();
Dalam kod di atas, kami mentakrifkan kelas bernama MyClass, yang mengandungi fungsi ahli bernama myMethod. Walau bagaimanapun, sebelum memulakan kelas ini, kami menetapkan $myObject kepada null. Oleh itu, apabila memanggil myMethod, $myObject bukan objek, tetapi nilai nol. Ini akan menyebabkan PHP membuang ralat "Ralat maut: Panggilan ke fungsi ahli pada bukan objek".
Penyelesaian kepada ralat ini adalah mudah, kita hanya perlu memastikan kita telah membuat instantiated objek sebelum memanggil fungsi ahli. Ubah suai kod di atas seperti berikut:
class MyClass { public function myMethod() { echo "Hello, World!"; } } $myObject = new MyClass(); $myObject->myMethod();
Dalam kod yang diubah suai ini, kami membuat instantiate objek MyClass menggunakan kata kunci baharu sebelum memanggil myMethod. Dengan cara ini, $myObject menjadi objek yang betul dan myMethod boleh dipanggil dengan jayanya tanpa ralat.
Satu lagi situasi biasa yang menyebabkan ralat ini ialah menggunakan nama pembolehubah yang salah. Sebagai contoh, pertimbangkan kod berikut:
class MyClass { public function myMethod() { echo "Hello, World!"; } } $myObject = new MyClass(); $myObject->myMethod();
Masalah dalam kod ialah kami menulis nama pembolehubah sebagai $myObject dan bukannya $myClass yang betul. Oleh itu, apabila memanggil myMethod, PHP tidak akan dapat mencari objek yang betul dan melaporkan ralat: "Ralat maut: Panggil ke fungsi ahli pada bukan objek".
Untuk membetulkan ralat ini, kami perlu memastikan kami menggunakan nama pembolehubah yang betul untuk merujuk objek. Ubah suai kod di atas seperti berikut:
class MyClass { public function myMethod() { echo "Hello, World!"; } } $myClass = new MyClass(); $myClass->myMethod();
Dalam kod yang diubah suai ini, kami menukar nama pembolehubah daripada $myObject kepada $myClass yang betul. Dengan cara ini kita boleh berjaya memanggil myMethod.
Secara umum, kunci untuk menyelesaikan ralat "Fatal error: Call to a member function on a non-object" adalah untuk memastikan objek yang betul telah digunakan dan pembolehubah yang betul digunakan sebelum memanggil nama fungsi ahli untuk merujuk kepada objek. Dengan mengikuti amalan terbaik ini, kami boleh mengelakkan ralat ini dengan berkesan dan memastikan kod PHP kami berfungsi dengan betul.
Saya harap contoh kod yang disediakan dalam artikel ini dapat membantu anda menyelesaikan ralat "Fatal error: Call to a member function on non-object" dan meningkatkan kemahiran pengaturcaraan PHP anda. Jika anda mempunyai sebarang soalan atau memerlukan bantuan lanjut, sila berasa bebas untuk bertanya.
Atas ialah kandungan terperinci Selesaikan ralat Fatal PHP: Panggil ke fungsi ahli pada ralat bukan objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!