Fungsi Bersarang PHP: Pandangan Lebih Dekat
Fungsi bersarang dalam PHP berkongsi persamaan dengan penutupan dalam JavaScript, tetapi ia berfungsi untuk tujuan yang berbeza dalam PHP bahasa pengaturcaraan.
Dalam fungsi PHP bersarang, fungsi dalam ditakrifkan dalam fungsi luar. Fungsi dalam mempunyai akses kepada skop fungsi luar, termasuk pembolehubah dan parameternya.
Fungsi bersarang PHP digunakan terutamanya untuk mencipta kaedah peribadi atau fungsi tanpa nama. Kaedah persendirian hanya boleh diakses dalam kelas di mana ia ditakrifkan.
Mari kita pertimbangkan contoh berikut:
<code class="php">function outer($msg) { function inner($msg) { echo 'inner: '.$msg.' '; } echo 'outer: '.$msg.' '; inner($msg); } inner('test1'); // Fatal error: Call to undefined function inner() outer('test2'); // outer: test2 inner: test2 inner('test3'); // inner: test3 outer('test4'); // Fatal error: Cannot redeclare inner()</code>
Dalam contoh ini, fungsi dalam hanya boleh dipanggil dari dalam luar fungsi. Memanggilnya secara terus (cth., inner('test1')) mengakibatkan ralat maut.
PHP 5.3 memperkenalkan fungsi tanpa nama, memberikan lebih banyak gelagat seperti JavaScript:
<code class="php">function outer() { $inner = function() { echo "test\n"; }; $inner(); } outer(); outer(); inner(); // PHP Fatal error: Call to undefined function inner() $inner(); // PHP Fatal error: Function name must be a string</code>
Kod ini mencipta fungsi tanpa nama ($dalam) dalam fungsi luar. Fungsi tanpa nama boleh dipanggil dari dalam fungsi luar, tetapi ia tidak boleh diakses atau dipanggil terus.
Atas ialah kandungan terperinci Apakah aplikasi dan had fungsi bersarang dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!