Mengapa Atribut PHP Tidak Membenarkan Fungsi
Dalam PHP, nilai lalai atribut tidak boleh memasukkan panggilan fungsi dalam pengisytiharan kelas. Sekatan ini telah mencetuskan pertanyaan tentang alasannya.
Perspektif Reka Bentuk
Reka bentuk pengkompil PHP memainkan peranan penting dalam pengehadan ini. Apabila menghuraikan pengisytiharan pembolehubah kelas, tatabahasa menjangkakan skalar statik atau tatasusunan skalar statik sebagai nilai yang sah.
Walaupun mengubah suai tatabahasa untuk menampung panggilan fungsi dalam atribut mungkin menghapuskan ralat sintaks, ia akan memperkenalkan isu baharu semasa penyusunan. Pengkompil beroperasi dengan menjana tatasusunan opcode semasa pengisytiharan kelas. Nilai bukan statik, seperti hasil daripada panggilan fungsi, akan mengganggu proses ini dengan menukar jujukan opcode yang dijangkakan.
Batasan Struktur
Untuk membetulkannya, pengkompil akan memerlukan tatasusunan opcode baharu yang diskop semata-mata kepada pengisytiharan pembolehubah kelas. Walau bagaimanapun, menentukan 时机 yang sesuai untuk menilai tatasusunan berskop ini memberikan cabaran lain:
Cabaran Pelaksanaan
Walaupun bahasa dinamik lain telah mengatasi halangan ini, berbuat demikian dalam PHP memerlukan penstrukturan semula yang ketara. Pereka bahasa setakat ini menganggap ini sebagai keutamaan yang rendah, kerana ia memerlukan banyak usaha tanpa faedah yang jelas.
Kesimpulan
Sekatan ke atas panggilan fungsi dalam PHP, nilai lalai atribut adalah akibat daripada reka bentuk pengkompil dan kesukaran praktikal untuk melaksanakan fungsi ini dalam struktur sedia ada.
Atas ialah kandungan terperinci Mengapa Panggilan Fungsi Tidak Dibenarkan sebagai Nilai Lalai Atribut dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!