Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menyelesaikan ralat PHP: Percubaan untuk memanggil kaedah bukan objek

Menyelesaikan ralat PHP: Percubaan untuk memanggil kaedah bukan objek

WBOY
WBOYasal
2023-08-25 14:06:291044semak imbas

Menyelesaikan ralat PHP: Percubaan untuk memanggil kaedah bukan objek

Selesaikan ralat PHP: cuba memanggil kaedah bukan objek

Dalam pembangunan PHP, anda sering menghadapi ralat biasa: cuba memanggil kaedah bukan objek. Ralat ini biasanya disebabkan oleh memanggil kaedah atau fungsi bukan objek dalam kod. Dalam artikel ini, kami akan memberi tumpuan kepada cara menyelesaikan masalah ini dan memberikan beberapa contoh biasa untuk rujukan.

1. Fahami sebab ralat

Untuk menyelesaikan ralat ini, anda perlu memahami sebab ralat tersebut. Dalam PHP, objek dijadikan instantiated melalui kelas, dan kaedah bukan objek merujuk kepada kaedah yang dipanggil oleh kelas yang belum digunakan atau yang tidak wujud. Dalam kes ini, PHP akan menggesa ralat "Percubaan untuk memanggil kaedah bukan objek".

2. Periksa kaedah panggilan kaedah

Sebelum menyelesaikan masalah ini, kita perlu menyemak kaedah memanggil kaedah dalam kod. Biasanya, memanggil kaedah memerlukan mula-mula instantiating kelas yang sepadan, dan kemudian menggunakan objek untuk memanggil kaedah dalam kelas. Contohnya adalah seperti berikut:

class MyClass {
    public function myMethod() {
        echo "Hello World!";
    }
}

$obj = new MyClass();  // 实例化 MyClass 类

$obj->myMethod();  // 调用 myMethod 方法

Dalam contoh ini, kita mula-mula membuat instantiate kelas MyClass dan menyimpan tika dalam pembolehubah $obj. Kemudian kami menggunakan $obj untuk memanggil kaedah myMethod.

3. Penyelesaian

  1. Periksa sama ada kelas telah diperkenalkan dengan betul

Apabila menghadapi ralat "cuba memanggil kaedah bukan objek", semak dahulu sama ada kelas yang berkaitan telah diperkenalkan dengan betul. Jika kelas tidak diimport dengan betul, PHP tidak dapat mencari kelas yang sepadan dan objek tidak boleh digunakan. Sila pastikan bahawa fail kelas yang sepadan telah diperkenalkan dengan betul sebelum memanggil kaedah kelas.

  1. Semak sama ada objek itu dibuat instantiated dengan betul

Jika fail kelas telah diimport dengan betul, tetapi anda masih menghadapi ralat "Percubaan untuk memanggil kaedah bukan objek", maka anda perlu menyemak sama ada objek itu digunakan dengan betul . Sila pastikan bahawa anda telah membuat contoh objek dengan betul sebelum memanggil kaedahnya.

  1. Semak sama ada kaedah itu wujud

Jika objek telah dibuat seketika dengan betul, tetapi anda masih menghadapi ralat "Percubaan untuk memanggil kaedah bukan objek", maka anda perlu menyemak sama ada kaedah itu wujud. Pastikan nama kaedah tidak disalah eja dan kaedah ditakrifkan dengan betul dalam kelas.

4. Contoh

Di bawah kami menyediakan beberapa contoh biasa untuk membantu memahami dan menyelesaikan ralat "cuba memanggil kaedah bukan objek".

  1. Objek tidak instantiated
class MyClass {
    public function myMethod() {
        echo "Hello World!";
    }
}

$obj = new MyClass();  // 实例化 MyClass 类
$obj = null;  // 错误的操作,将对象设为 null

$obj->myMethod();  // 试图调用非对象的方法,报错!

Penyelesaian: Pastikan objek di instantiated dengan betul sebelum memanggil kaedah.

  1. Kelas tidak diimport dengan betul
$obj = new MyClass();  // 试图实例化一个不存在的类

$obj->myMethod();  // 试图调用非对象的方法,报错!

Penyelesaian: Pastikan anda menggunakan nama kelas yang betul dan kelas tersebut telah diimport dengan betul.

  1. Kaedah tidak wujud
class MyClass {
    public function myMethod() {
        echo "Hello World!";
    }
}

$obj = new MyClass();  // 实例化 MyClass 类

$obj->nonExistentMethod();  // 试图调用一个不存在的方法,报错!

Penyelesaian: Semak sama ada nama kaedah adalah betul dan pastikan kaedah telah ditakrifkan dengan betul dalam kelas.

Ringkasan:

Dalam pembangunan PHP, menyelesaikan ralat "cuba memanggil kaedah bukan objek" memerlukan menyemak langkah pengenalan kelas, instantiasi objek dan definisi kaedah dalam kod. Dengan memeriksa dan menganalisis dengan teliti punca ralat dan mengambil penyelesaian yang sepadan, ralat biasa ini boleh diperbaiki dengan cepat. Saya harap artikel ini akan membantu dalam menyelesaikan ralat PHP.

Atas ialah kandungan terperinci Menyelesaikan ralat PHP: Percubaan untuk memanggil kaedah bukan objek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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