Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat PHP: Penyelesaian kepada kaedah panggilan antara muka yang tidak ditentukan!

Ralat PHP: Penyelesaian kepada kaedah panggilan antara muka yang tidak ditentukan!

王林
王林asal
2023-08-20 08:47:08677semak imbas

Ralat PHP: Penyelesaian kepada kaedah panggilan antara muka yang tidak ditentukan!

Ralat PHP: Penyelesaian untuk memanggil kaedah antara muka yang tidak ditentukan!

Dalam pembangunan PHP, kami sering menggunakan antara muka untuk mentakrifkan spesifikasi set kaedah, dan kemudian melaksanakan kaedah ini dalam kelas. Dengan cara ini, kita boleh memanggil kaedah yang ditakrifkan dalam antara muka melalui objek. Walau bagaimanapun, dalam pembangunan sebenar, kadangkala kita mungkin menghadapi ralat: memanggil kaedah antara muka yang tidak ditentukan. Ralat ini biasanya berlaku apabila kita cuba memanggil kaedah antara muka yang tidak wujud. Jadi, bagaimana kita harus menyelesaikan masalah ini? Di bawah, kami menggambarkan penyelesaian dengan contoh kod.

Katakan kita mempunyai antara muka yang dipanggil "Kereta" yang mentakrifkan kaedah "memandu" seperti yang ditunjukkan di bawah:

interface Car {
    public function drive();
}

Kemudian, kita mempunyai kelas yang dipanggil "Mercedes" yang melaksanakan antara muka "Kereta" , dan mentakrifkan kaedah "memandu" .

class Mercedes implements Car {
    public function drive() {
        echo "Mercedes is driving.";
    }
}

Sekarang, kami cuba mencipta contoh antara muka "Kereta" dan memanggil kaedah "memandu":

$car = new Car();
$car->drive();

Walau bagaimanapun, apabila kami menjalankan kod di atas, kami akan menerima ralat: Ralat maut: Ralat Tidak Ditangkap: Tidak Dapat antara muka instantiate Kereta. Ini kerana kami cuba membuat instantiate antara muka, dan antara muka tidak boleh instantiate.

Jadi, bagaimana kita harus memanggil kaedah yang ditakrifkan dalam antara muka?

Penyelesaiannya ialah kita perlu mencipta contoh kelas yang melaksanakan antara muka dan memanggil kaedah dalam antara muka melalui tika ini. Iaitu, gunakan kelas yang melaksanakan antara muka untuk membuat instantiate objek, dan kemudian memanggil kaedah dalam antara muka melalui objek.

Sekarang, mari kita kemas kini kod:

$mercedes = new Mercedes();
$mercedes->drive();

Sekarang, apabila kita menjalankan kod di atas, kita akan mendapat output yang dijangkakan: Mercedes sedang memandu.

Melalui contoh ini, kita dapat melihat bahawa apabila kita menghadapi panggilan kepada yang tidak ditentukan antara muka Apabila ralat kaedah berlaku, kita perlu menyemak sama ada kelas yang melaksanakan antara muka diwujudkan dengan betul, dan menggunakan contoh kelas untuk memanggil kaedah dalam antara muka.

Selain itu, terdapat satu lagi situasi yang mungkin menyebabkan ralat dalam memanggil kaedah antara muka yang tidak ditentukan, iaitu nama kaedah antara muka tidak betul. Sebagai contoh, katakan kami salah mengeja nama kaedah "drive" dalam antara muka sebagai "drve", tetapi nama kaedah dalam kelas pelaksanaan adalah "drive" dengan betul Apabila kami cuba memanggil kaedah ini sekali lagi, kami akan menerima ralat: Fatal ralat: Kelas Mercedes mengandungi 1 kaedah abstrak dan oleh itu mesti diisytiharkan sebagai abstrak atau melaksanakan kaedah yang selebihnya (Mercedes::drve). Ralat ini mendorong kami bahawa kelas Mercedes mengandungi 1 kaedah abstrak, jadi ia mesti diisytiharkan sebagai kelas abstrak atau melaksanakan kaedah yang selebihnya (Mercedes::drve). Ralat ini memberitahu kami bahawa nama kaedah dalam kelas pelaksanaan mestilah betul-betul sama dengan nama kaedah dalam antara muka.

Ringkasnya, apabila kita menghadapi ralat memanggil kaedah antara muka yang tidak ditentukan, kita perlu memberi perhatian kepada dua aspek: pertama, nyatakan kelas yang melaksanakan antara muka dengan betul, kedua, pastikan kelas pelaksanaan Nama kaedah adalah sama sebagai nama kaedah dalam antara muka. Dengan semakan dan pembetulan sedemikian, kami boleh menyelesaikan masalah ini dan menjadikan kod PHP kami lebih mantap dan boleh dipercayai.

Atas ialah kandungan terperinci Ralat PHP: Penyelesaian kepada kaedah panggilan antara muka yang tidak ditentukan!. 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