Rumah >pembangunan bahagian belakang >tutorial php >Mengapa PHP 5.2 Tidak Membenarkan Kaedah Kelas Statik Abstrak?

Mengapa PHP 5.2 Tidak Membenarkan Kaedah Kelas Statik Abstrak?

DDD
DDDasal
2024-11-11 03:44:021068semak imbas

Why Did PHP 5.2 Disallow Abstract Static Class Methods?

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!

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