Mod Ketat PHP 5.2: Mengapa Penolakan Kaedah Kelas Statik Abstrak?
Dalam PHP 5.2, mendayakan amaran ketat boleh mencetuskan amaran biasa : "Fungsi statik tidak boleh abstrak". Amaran ini berpunca daripada perubahan yang diperkenalkan dalam PHP 5.2, yang tidak membenarkan kaedah kelas statik abstrak.
Sebab: Pengawasan Sejarah
PHP 5.2 pada mulanya tidak mempunyai pengikatan statik lewat, menjadikan fungsi statik abstrak tidak berguna. Oleh kerana kata kunci diri dalam kaedah statik abstrak merujuk kepada kelas induk, bukan kelas kanak-kanak di mana kaedah itu digunakan, kaedah sedemikian tidak mempunyai kepentingan praktikal. Oleh itu, amaran itu bertujuan untuk menangkap dan mencegah kemungkinan ralat pengekodan.
Pengikatan Statik Lewat dan Justifikasi Cacat
Dalam PHP 5.3, pengikatan statik lewat diperkenalkan, membenarkan kaedah statik kelas kanak-kanak yang akan dipanggil daripada kaedah induk menggunakan kata kunci statik. Ini menghapuskan halangan teknikal yang telah menjadikan kaedah statik abstrak tidak berguna. Walau bagaimanapun, amaran itu berterusan dalam PHP 5.2 berdasarkan hujah yang lemah: bahawa mendedahkan kaedah statik abstrak boleh mengakibatkan kaedah awam yang rosak.
Persepsi Palsu
Wajar untuk amaran itu salah. Kaedah statik abstrak boleh wujud bersama dengan pengikatan statik lewat, menyediakan kes penggunaan yang sah untuk menggunakan kaedah statik kelas anak daripada kaedah induk.
Kekeliruan dan Respons Tidak Tepat
A Laporan pepijat PHP yang meminta pengalihan keluar amaran kerana penambahan pengikatan statik lewat menerima respons yang mengetepikan daripada Rasmus Lerdorf. Dia tersilap menyatakan bahawa kaedah statik abstrak dengan pengikatan statik lewat berfungsi, yang tidak betul kerana ia masih mencetuskan amaran. Kekeliruan dan kekurangan kejelasan ini menyebabkan amaran berterusan.
Resolusi dalam PHP 7
Nasib baik, PHP 7 akhirnya telah membetulkan isu ini, mengklasifikasikan semula amaran ini kepada notis semata-mata. Dengan pengenalan PHP 7, kaedah statik abstrak disokong sepenuhnya dan boleh digunakan dengan selamat tanpa mencetuskan sebarang amaran.
Atas ialah kandungan terperinci Mengapa PHP 5.2 Tidak Membenarkan Kaedah Kelas Statik Abstrak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!