Rumah > pembangunan bahagian belakang > tutorial php > Menyelesaikan ralat PHP: Cuba memanggil kaedah bukan objek

Menyelesaikan ralat PHP: Cuba memanggil kaedah bukan objek

WBOY
Lepaskan: 2023-08-25 18:18:02
asal
1305 orang telah melayarinya

Menyelesaikan ralat PHP: Cuba memanggil kaedah bukan objek

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.

  1. Periksa sama ada objek dimulakan dengan betul

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();    // 报错:尝试调用非对象的方法
Salin selepas log masuk

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();        // 正常输出:调用成功!
Salin selepas log masuk
  1. Periksa sama ada objek itu batal

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();  // 报错:尝试调用非对象的方法
Salin selepas log masuk

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();    // 不会报错,因为已经进行了判空处理
}
Salin selepas log masuk
  1. Semak sama ada objek adalah jenis yang betul

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();  // 报错:尝试调用非对象的方法
Salin selepas log masuk

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();    // 不会报错,因为已经进行了类型检查
}
Salin selepas log masuk

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!

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