Rumah >pembangunan bahagian belakang >tutorial php >Bolehkah Fungsi Bersarang PHP Dipanggil di Luar Skop Terlampirnya?
Fungsi PHP Bersarang: Tujuan dan Penggunaan
Dalam bidang PHP, fungsi bersarang memperkenalkan elemen pengkapsulan dan organisasi kod. Walaupun mereka mungkin tidak berada di mana-mana seperti rakan JavaScript mereka, fungsi bersarang PHP mencari niche mereka dalam senario tertentu.
Pertimbangkan contoh ini:
<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>
Seperti yang anda boleh perhatikan, apabila anda cuba untuk gunakan fungsi inner() terus di luar fungsi outer(), ia mengakibatkan ralat maut kerana ia terhad kepada skop fungsi outer(). Tingkah laku ini sejajar dengan konsep skop leksikal, di mana fungsi bersarang mewarisi skop fungsi lampirannya dan tidak boleh diakses dari luar skop tersebut.
Jika anda menggunakan PHP 5.3 atau lebih baru, anda boleh memanfaatkan fungsi tanpa nama untuk mencapai kelakuan 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>
Output:
test test
Dalam contoh ini, fungsi anonim $inner ditakrifkan dalam fungsi outer() dan mempunyai akses kepada skopnya. Walau bagaimanapun, ia tetap terhad kepada skop itu dan tidak boleh digunakan terus daripada skop global.
Atas ialah kandungan terperinci Bolehkah Fungsi Bersarang PHP Dipanggil di Luar Skop Terlampirnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!