當前位置:
首頁 > 知識 > PHP之道-函數式編程

PHP之道-函數式編程

原文出處:http://www.phptherightway.com/pages/Functional-Programming.html

PHP支持一流的函數,意味著函數可以被賦值到一個變數。用戶自定義以及內建函數都可以被變數引用以及動態調用。函數可以作為參數傳遞到其他函數中,函數也可以返回其他函數(這個特性被稱為高階函數)。

遞歸,這是一個允許函數調用它本身的特性,它在語言中被支持,但是大多數PHP代碼都是用迭代。

匿名函數(以及閉包支持)自從PHP5.3以後出現(2009)。

PHP 5.4增加了綁定閉包作用域到對象的特性,也提高回調的支持,如回調函數幾乎在任何情況下都可以與匿名函數互換。

高階函數最多的使用場景是實現策略模式。內建函數array_filter 需要一個數組參數(data)以及一個用於過濾每一個數組項的函數(一個策略或者一個回調)。

閉包是一個可以訪問從外部作用域引進來的非全局變數。理論上,閉包是一個帶有參數的函數。那些參數在定義時被上下文封閉起來,對外部是不可見的。閉包可以用一個很乾凈利索的方式解決變數作用域的限制。

下面一個例子我們使用閉包來定義一個在過濾器外面返回一個過濾器到array_filter的函數。

每一個在濾子族的過濾函數接收一個大於某個最小值的值。單個被criteria_greater_than函數返回的過濾器是一個擁有在作用域中被值封閉起來的$min參數的閉包(當criteria_greater_than被調用時作為參數傳入)。

為了引入$min變數到創建的函數當中,提前綁定是默認被使用的。事實上,在引入的時候,延遲綁定應該使用引用。想像一個模板或驗證庫,此時閉包被定義於在作用域中捕捉變數然後當匿名函數執行的時候訪問它們。

第一次做翻譯,有些地方還是翻譯得不太好,希望各位指正。

更多分享,敬請關注

本文來源網路,侵立刪!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PHP技術大全 的精彩文章:

Nginx 啟用 Brotli 壓縮

TAG:PHP技術大全 |