Rumah > pembangunan bahagian belakang > tutorial php > Apakah aplikasi dan had fungsi bersarang dalam PHP?

Apakah aplikasi dan had fungsi bersarang dalam PHP?

Mary-Kate Olsen
Lepaskan: 2024-10-30 01:08:29
asal
1074 orang telah melayarinya

What are the applications and limitations of nested functions in PHP?

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

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

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!

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