Mengapa Saya Tidak Boleh Memulakan Harta Kelas dengan Fungsi Tanpa Nama dalam PHP?

Linda Hamilton
Lepaskan: 2024-10-26 20:53:29
asal
115 orang telah melayarinya

 Why Can't I Initialize a Class Property with an Anonymous Function in PHP?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!