Selesaikan ralat Fatal PHP: Panggil ke fungsi ahli pada ralat bukan objek

PHPz
Lepaskan: 2023-08-27 08:44:01
asal
1649 orang telah melayarinya

解决PHP Fatal error: Call to a member function on a non-object错误

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();
Salin selepas log masuk

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();
Salin selepas log masuk
Salin selepas log masuk

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();
Salin selepas log masuk
Salin selepas log masuk

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();
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan