Memahami "Pengisytiharan Kaedah Harus Serasi dengan Kaedah Induk" Ralat dalam PHP
Apabila bekerja dengan pengaturcaraan berorientasikan objek dalam PHP, anda mungkin menghadapi ralat "Strict Standards: Declaration of childClass::customMethod() harus serasi dengan parentClass::customMethod()." Ralat ini menunjukkan bahawa pengisytiharan kaedah dalam kelas anak mesti sejajar dengan pengisytiharan kaedah yang sepadan dalam kelas induknya.
Punca Kemungkinan:
Ralat boleh berlaku disebabkan oleh dua sebab utama:
-
Ketidakpadanan Argumen: Kaedah dalam kelas anak mempunyai parameter input (argumen) yang berbeza berbanding kaedah induk. Ini termasuk perbezaan dalam bilangan, jenis atau susunan hujah.
-
Percanggahan Tahap Akses: Tahap akses (awam, peribadi atau dilindungi) kaedah dalam kelas kanak-kanak bukan sama seperti kaedah induk. Sebagai contoh, kaedah yang diisytiharkan sebagai "awam" dalam kelas induk tidak boleh diisytiharkan sebagai "peribadi" dalam kelas anak.
Pengisytiharan Kaedah Serasi:
Untuk memastikan keserasian, pengisytiharan kaedah dalam kelas anak hendaklah sepadan dengan pengisytiharan dalam kelas induk dalam aspek berikut:
- Parameter input (nombor, jenis, susunan)
- Jenis pemulangan
- Tahap akses
Dokumentasi dan Sumber:
- [Manual PHP Rasmi: Melebihan Kaedah](https: //www.php.net/manual/en/language.oop5.overloading.php)
- [PHPStan: Keserasian Kaedah Tahap Asas](https://phpstan.org/user-guide/rules/methods /basic-method-compatibility)
- [Stack Overflow: Apakah maksud "Declaration of Method class::method harus serasi dengan parentClass::method"?](https://stackoverflow.com /questions/2194559/apa-apa-pengisytiharan-kaedah-kelas-kaedah-sepatutnya-serasi-dengan-itu)
Atas ialah kandungan terperinci Mengapa Saya Mendapat Ralat \'Pengisytiharan Kaedah Harus Serasi dengan Kaedah Induk\' dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!