PHP的閉包
2012-10-29 14:27 by 軒脈刃, 25899 閱讀, 7 評論, 收藏, 編輯
php的閉包(Closure)也就是匿名函式。是PHP5.3引入的。
閉包的語法很簡單,需要注意的關鍵字就只有use,use意思是連線閉包和外界變數。
1 2 3 |
|
閉包的幾個作用:
1 減少foreach的迴圈的程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
|
這裡如果我們改造getTotal函式必然要使用到foreach
2 減少函式的引數
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
3 解除遞迴函式
1 2 3 4 5 6 7 8 9 10 |
|
注意上題中的use使用了&,這裡不使用&會出現錯誤fib(fib(n-1)是找不到function的(前面沒有定義fib的型別)
所以想使用閉包解除迴圈函式的時候就需要使用
1 2 3 4 |
|
這樣的形式
4 關於延遲繫結
如果你需要延遲繫結use裡面的變數,你就需要使用引用,否則在定義的時候就會做一份拷貝放到use中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
使用引用和不使用引用就代表了是呼叫時賦值,還是申明時候賦值