Mengakses Pembolehubah Skop Global Dalam Fungsi Tanpa Nama
Dalam PHP, fungsi tanpa nama lazimnya mewarisi skop tempatan fungsi lampiran atau skop global jika ditakrifkan di luar mana-mana fungsi. Walau bagaimanapun, apabila anda cuba mengubah suai pembolehubah berskop global dari dalam fungsi tanpa nama, anda mungkin menghadapi masalah.
Mengubah Suai Pembolehubah Skop Global
Pertimbangkan contoh berikut:
$variable = "nothing"; functionName($someArgument, function() { $variable = "something"; }); echo $variable; // Output: "nothing"
Walaupun cuba mengubah suai $variable dalam fungsi tanpa nama, output kekal "tiada apa-apa." Ini kerana fungsi tanpa nama mencipta skopnya sendiri dan tidak mewarisi skop global secara langsung.
Penyelesaian: Penutupan
Untuk menangani had ini, anda boleh menggunakan penutupan. Penutupan membolehkan anda menangkap pembolehubah daripada skop yang disertakan ke dalam skop baharu. Untuk mengubah suai pembolehubah berskop global dari dalam fungsi tanpa nama, gunakan sintaks berikut:
functionName($someArgument, function() use (&$variable) { $variable = "something"; });
Dengan mendahului penggunaan sebelum nama pembolehubah dan merujuknya dengan &, anda membuat penutupan yang menangkap pembolehubah melalui rujukan, membenarkan pengubahsuaian dalam fungsi tanpa nama.
Kesimpulan
Menggunakan penutupan membolehkan anda mengakses dan mengubah suai pembolehubah berskop global dari dalam fungsi tanpa nama, mengatasi batasan mencipta yang baharu skop dalam fungsi tanpa nama. Dengan menangkap pembolehubah melalui rujukan, anda boleh melakukan pengubahsuaian yang akan berterusan di luar skop fungsi tanpa nama.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengubah Suai Pembolehubah Global daripada Dalam Fungsi Tanpa Nama dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!