在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中文網其他相關文章!