什麼是閉包函數?閉包函數的作用是什麼? (附代碼)

慕斯
發布: 2023-03-10 12:24:01
原創
2368 人瀏覽過

上篇文章為大家介紹了《PHP中什麼是匿名函數?它和普通函數的差別? (詳解及實例)》,本文繼續介紹什麼是閉包函數?閉包函數的作用是什麼? (附代碼)有需要的朋友可以參考一下,希望對大家有幫助。

什麼是閉包函數?閉包函數的作用是什麼? (附代碼)

什麼是閉包函數:

#在子函數內部使用透過use關鍵字使用父函數的變量,這種方式就是閉包函數

格式: 

function 父函数(){
//父函数的局部变量
$var-值
//声明廬名函数并且使用use格式实现闭包
变量- function() use(父元素变量){
};
}
登入後複製

我們學的匿名函數以及今天要了解的閉包函數,在我們平常寫程式碼的時候用的不是很多,一般他們會出現在編寫框架的時候。

具體我們以程式碼為例,展開討論:

<?php
/******* 闭包函数************/
//定义一个变量
  $pph = &#39; 这是页面及的变量&#39;;
  function father1(){
//父函数的一个局部变量
  $pph = &#39;不想上班&#39; ;
  function son1( ){
           global $pph;
           echo $pph;
}
    son();
}
    father1();
?>
登入後複製

程式碼解析:

首先,我們還是先定義一個變數$pph(頁面及的變數),緊接著定義一個父函數的局部變數[function father()],此時,我們內部和外部都有變量,然後,我們global $pph,輸出(echo)$pph,輸出的結果是父類別還是頁面層級的?當我們執行結果發現,輸出結果是頁面層級的,(程式碼如下所示)因此,我們得出一旦呼叫全域變數的時候,他只能輸出頁面變數而無法輸出父類別變數。

什麼是閉包函數?閉包函數的作用是什麼? (附代碼)

當我們寫成匿名函數的形式,我們可以使用父元素的變量,我們需要使用use關鍵字,但是當我們運行時,會發現錯誤提示

程式碼如下:

function father(){
        $pph = &#39;不想上班&#39;;
        function son() use($pph){
        echio $pph;
        }
        son();
        }
        father();
登入後複製

執行結果如下:

什麼是閉包函數?閉包函數的作用是什麼? (附代碼)

#因此這個是錯誤的,無法實作;

使用匿名函數的方式實作閉包;

     function father(){
            $pph = &#39;不想上班&#39;;
            $son = function () use($pph){
            echo $pph;
            };
            //调用内部函数
            $son();
            }
            father();
登入後複製

推薦學習:《PHP影片教學

以上是什麼是閉包函數?閉包函數的作用是什麼? (附代碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板