Ralat PHP: Penyelesaian untuk memanggil kaedah kelas yang tidak ditentukan!
Semasa pembangunan PHP, kadangkala kita mungkin menghadapi ralat semasa memanggil kaedah kelas yang tidak ditentukan. Ralat seperti ini biasanya menyebabkan program gagal berjalan seperti biasa dan memerlukan kami menyelesaikannya tepat pada masanya. Artikel ini menerangkan beberapa cara untuk menyelesaikan masalah ini, bersama-sama dengan contoh kod.
Pertama sekali, kita perlu menyemak dengan teliti sama ada nama kaedah yang dipanggil dalam kod itu dieja dengan betul. PHP adalah sensitif huruf besar dan huruf kecil dan huruf besar atau huruf kecil yang salah boleh menyebabkan kaedah tidak dipanggil dengan betul.
Sebagai contoh, katakan kita mempunyai kelas bernama Person, yang mentakrifkan kaedah sayHello() Jika kita tersilap menulis sayhello() (huruf kecil "hello") apabila memanggil kaedah ini, maka kaedah ini akan dianggap tidak ditentukan. Oleh itu, pastikan nama kaedah betul-betul sama dengan nama kaedah yang ditakrifkan dalam kelas.
Berikut ialah contoh kod:
class Person { public function sayHello() { echo "Hello!"; } } // 创建Person对象 $person = new Person(); // 调用sayHello方法 $person->sayhello(); // 注意这里的大小写 // 输出:PHP Fatal error: Uncaught Error: Call to undefined method Person::sayhello()
Dalam contoh di atas, kerana kes nama kaedah tidak sepadan, ralat "kaedah tidak ditentukan" akan berlaku. Untuk menyelesaikan masalah ini, cuma tukar sayhello() kaedah panggilan kepada sayHello().
Penyelesaian kedua ialah memastikan kaedah ditakrifkan dengan betul. Dalam PHP, kita mesti menentukan kaedah dalam kelas sebelum kita boleh memanggilnya. Jika kita tidak mentakrifkan kaedah dalam kelas, atau mentakrifkan kaedah yang tidak betul-betul sama dengan kaedah yang ingin kita panggil, maka kaedah itu dianggap tidak ditentukan.
Sebagai contoh, kami masih menggunakan kelas Orang di atas, tetapi kali ini kami tidak mentakrifkan kaedah sayHello().
class Person { // 没有定义sayHello方法 } // 创建Person对象 $person = new Person(); // 调用sayHello方法 $person->sayHello(); // 输出:PHP Fatal error: Uncaught Error: Call to undefined method Person::sayHello()
Dalam contoh ini, kerana kami tidak mentakrifkan kaedah sayHello() dalam kelas Person, ralat "kaedah tidak ditentukan" akan berlaku apabila kami memanggil kaedah ini.
Untuk menyelesaikan masalah ini, kita hanya perlu memastikan kaedah ditakrifkan dengan betul. Cuma tambahkan kaedah sayHello() pada kelas Person.
class Person { public function sayHello() { echo "Hello!"; } } // 创建Person对象 $person = new Person(); // 调用sayHello方法 $person->sayHello(); // 输出:Hello!
Akhir sekali, kita perlu menyemak kebolehcapaian kaedah. Dalam PHP, kaedah boleh ditetapkan kepada tiga tahap akses berbeza: awam, dilindungi atau peribadi. Jika kami cuba memanggil kaedah yang tidak boleh diakses, ralat "kaedah tidak ditentukan" juga akan berlaku.
Sebagai contoh, kami menggunakan kelas Orang di atas sekali lagi, tetapi kali ini kami menetapkan kaedah sayHello() kepada protected.
class Person { protected function sayHello() { echo "Hello!"; } } // 创建Person对象 $person = new Person(); // 调用sayHello方法 $person->sayHello(); // 输出:PHP Fatal error: Uncaught Error: Call to undefined method Person::sayHello()
Dalam contoh ini, memandangkan kaedah sayHello() ditetapkan kepada dilindungi, kaedah tersebut tidak boleh diakses di luar kelas. Untuk menyelesaikan masalah ini, kita boleh menukar tahap akses kaedah kepada awam.
class Person { public function sayHello() { echo "Hello!"; } } // 创建Person对象 $person = new Person(); // 调用sayHello方法 $person->sayHello(); // 输出:Hello!
Ringkasan:
Memanggil kaedah kelas yang tidak ditentukan adalah kesilapan biasa semasa pembangunan PHP. Untuk menyelesaikan masalah ini, kita harus menyemak dengan teliti ejaan nama kaedah, sama ada kaedah ditakrifkan dengan betul dan kebolehcapaian kaedah. Melalui kaedah dan kod sampel di atas, saya percaya pembaca boleh menyelesaikan masalah sedemikian dengan lebih baik dan meningkatkan kualiti dan kestabilan kod.
Atas ialah kandungan terperinci Ralat PHP: Penyelesaian untuk memanggil kaedah kelas yang tidak ditentukan!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!