首頁 >後端開發 >PHP問題 >php閉包函數是什麼

php閉包函數是什麼

王林
王林原創
2019-10-11 17:45:032943瀏覽

php閉包函數是什麼

在PHP中匿名函數(Anonymous functions),也叫閉包函數( closures ),允許暫時建立一個沒有指定名稱的函數。常用作回呼函數(callback)的參數。當然,也有其他應用的情況。

註:php閉包是PHP5.3版本之後才有的

##什麼是閉包?

閉包是可以包含自由(未綁定到特定物件)變數的程式碼區塊;這些變數不是在這個程式碼區塊內或任何全域上下文中定義的,而是在定義程式碼區塊的環境中定義(局部變數)。 「閉包」 一詞來自以下兩者的結合:要執行的程式碼區塊(由於自由變數被包含在程式碼區塊中,這些自由變數以及它們引用的物件沒有被釋放)和為自由變數提供綁定的計算環境(作用域)。在程式設計領域我們可以通俗的說:子函數可以使用父函數中的局部變量,這種行為就叫做閉包。

PHP匿名函數和閉包使用的句法與普通函數相同,但匿名函和閉包數其實是偽裝成函數的對象。

匿名函數:

就是沒有名稱的函數.匿名函數可以賦值給變數,物件傳遞.不過匿名函數仍是函數,因此可以呼叫,還可以傳入參數.匿名函數特別適合作為函數或方法的回調.

閉包:

是指在建立時封裝周圍狀態的函數.即使是閉包所在的環境不存在了,閉包中封裝的狀態依然存在。

注意:理論上講,閉包和匿名函數是不同的概念. 不過,PHP將其視為相同的概念.

閉包的語法相當簡單,要注意的關鍵字就只有use,use是連結閉包和外界變數。

$a = function() use($b) {
//TO-DO
};

下面給幾個實作閉包的一個例子:

//例一:把匿名函数当做参数传递,并且调用它
function callFunc( $func ) {
 $func( "some string\r\n" );
}
$printStrFunc = function( $str ) {
 echo $str;
};
//例二:也可以直接将匿名函数进行传递。如果你了解js,这种写法可能会很熟悉
callFunc( $printStrFunc );
callFunc( function( $str ) {
 echo $str;
} );

閉包雖然語法和實作非常簡單,但是用好卻不易。

閉包好處:

1、減少foreach的循環的程式碼

2、減少函數的參數

#3 、解除遞迴函數

推薦教學:

PHP影片教學
#

以上是php閉包函數是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

相關文章

看更多