Memulakan Harta Kelas dengan Fungsi Tanpa Nama
Ketidakupayaan untuk secara langsung memulakan harta kelas kepada fungsi apabila mengisytiharkan harta dalam PHP adalah disebabkan kepada pengehadan sintaks pengisytiharan sifat bahasa.
PHP tidak membenarkan pemulaan sifat dengan ungkapan yang tidak boleh dinilai pada masa penyusunan. Fungsi, sebagai entiti dinamik, tidak boleh dinilai secara statik, dan oleh itu tidak boleh digunakan untuk permulaan sifat.
Ini jelas dalam coretan kod berikut, yang mengakibatkan ralat sintaks:
<code class="php">class AssignAnonFunction { private $someFunc = function() { echo "Will Not work"; }; }</code>
Walau bagaimanapun, adalah mungkin untuk menetapkan fungsi kepada harta selepas kelas telah digunakan. Ini boleh dicapai menggunakan kaedah pembina:
<code class="php">class AssignAnonFunctionInConstructor { private $someFunc; public function __construct() { $this->someFunc = function() { echo "Does Work"; }; } }</code>
Sebab bagi percanggahan ini ialah penetapan harta dalam pembina berlaku pada masa jalan, di mana fungsi boleh ditetapkan secara dinamik.
Ia adalah penting untuk ambil perhatian bahawa had pada permulaan sifat dengan fungsi adalah aspek asas reka bentuk bahasa PHP. Walaupun ia boleh menyusahkan dalam sesetengah senario, ia memastikan sifat dimulakan dengan nilai yang konsisten dan menghalang ralat masa jalan.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Memulakan Harta Kelas dengan Fungsi Tanpa Nama dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!