Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Menetapkan Fungsi Tanpa Nama kepada Sifat Kelas dalam PHP?

Bagaimana untuk Menetapkan Fungsi Tanpa Nama kepada Sifat Kelas dalam PHP?

Susan Sarandon
Susan Sarandonasal
2024-10-26 13:25:02708semak imbas

How to Assign Anonymous Functions to Class Properties in PHP?

Menetapkan Fungsi Tanpa Nama kepada Sifat Kelas dalam PHP

Dalam PHP, tidak mungkin untuk memulakan terus sifat kelas kepada fungsi tanpa nama apabila mengisytiharkannya. Coretan kod di bawah:

<code class="php">class AssignAnonFunction {
    private $someFunc = function() {
        echo "Will Not work";
    };
}</code>

Menghasilkan mesej ralat "Ralat hurai: ralat sintaks, T_FUNCTION tidak dijangka." Ini kerana bahasa PHP tidak membenarkan pemulaan sifat dengan fungsi semasa fasa pengisytiharan.

Sekatan Permulaan Nilai Malar

Menurut manual PHP, sifat kelas hanya boleh dimulakan dengan nilai malar semasa pengisytiharan mereka. Nilai malar ialah nilai yang boleh dinilai pada masa penyusunan tanpa bergantung pada maklumat masa jalan. Fungsi, bagaimanapun, tidak sesuai dengan kriteria ini dan oleh itu tidak dibenarkan sebagai pemula harta semasa pengisytiharan.

Penyelesaian Menggunakan Pembina

Walaupun ketidakupayaan untuk memulakan sifat dengan fungsi tanpa nama semasa pengisytiharan, adalah mungkin untuk menetapkan fungsi kepada sifat dalam kaedah pembina. Mengubah suai kod sebelumnya kepada yang berikut membolehkan tugasan:

<code class="php">class AssignAnonFunctionInConstructor {
    private $someFunc;

    public function __construct() {
        $this->someFunc = function() {
            echo "Does Work";
        };
    }
}</code>

Kaedah pembina dipanggil semasa penciptaan objek, membenarkan penugasan fungsi tanpa nama kepada harta pada masa jalan.

Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Fungsi Tanpa Nama kepada Sifat Kelas dalam PHP?. 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