上篇文章為大家介紹了《PHP中什麼是匿名函數?它和普通函數的差別? (詳解及實例)》,本文繼續介紹什麼是閉包函數?閉包函數的作用是什麼? (附代碼)有需要的朋友可以參考一下,希望對大家有幫助。
什麼是閉包函數:
#在子函數內部使用透過use關鍵字使用父函數的變量,這種方式就是閉包函數
格式:
function 父函数(){ //父函数的局部变量 $var-值 //声明廬名函数并且使用use格式实现闭包 变量- function() use(父元素变量){ }; }
我們學的匿名函數以及今天要了解的閉包函數,在我們平常寫程式碼的時候用的不是很多,一般他們會出現在編寫框架的時候。
具體我們以程式碼為例,展開討論:
<?php /******* 闭包函数************/ //定义一个变量 $pph = ' 这是页面及的变量'; function father1(){ //父函数的一个局部变量 $pph = '不想上班' ; function son1( ){ global $pph; echo $pph; } son(); } father1(); ?>
程式碼解析:
首先,我們還是先定義一個變數$pph(頁面及的變數),緊接著定義一個父函數的局部變數[function father()],此時,我們內部和外部都有變量,然後,我們global $pph,輸出(echo)$pph,輸出的結果是父類別還是頁面層級的?當我們執行結果發現,輸出結果是頁面層級的,(程式碼如下所示)因此,我們得出一旦呼叫全域變數的時候,他只能輸出頁面變數而無法輸出父類別變數。
當我們寫成匿名函數的形式,我們可以使用父元素的變量,我們需要使用use關鍵字,但是當我們運行時,會發現錯誤提示
程式碼如下:
function father(){ $pph = '不想上班'; function son() use($pph){ echio $pph; } son(); } father();
執行結果如下:
#因此這個是錯誤的,無法實作;
使用匿名函數的方式實作閉包;
function father(){ $pph = '不想上班'; $son = function () use($pph){ echo $pph; }; //调用内部函数 $son(); } father();
推薦學習:《PHP影片教學》
以上是什麼是閉包函數?閉包函數的作用是什麼? (附代碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!