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

王林
Lepaskan: 2023-08-20 08:48:01
asal
662 orang telah melayarinya

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

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.";
    }
}
Salin selepas log masuk

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

$car = new Car();
$car->drive();
Salin selepas log masuk

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

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!