閉包是能夠包含自由(未綁定到特定對象)變量的代碼塊;這些變量不是在這個代碼塊內或者任何全局上下文中定義的,而是在定義代碼塊的環境中定義(局部變量)。「閉包」 一詞來源於如下二者的結合:要執行的代碼塊(因爲自由變量被包含在代碼塊中,這些自由變量以及它們引用的對象沒有被釋放)和爲自由變量提供綁定的計算環境(做用域)。在 Scala、Scheme、Common Lisp、Smalltalk、Groovy、JavaScript、Ruby、 Python、Go、Lua、objective c、swift 以及Java(Java8及以上)等語言中都能找到對閉包不一樣程度的支持。 來自百度百科php
PHP閉包實現 來自 連接
swift
//例一 //在函數裏定義一個匿名函數,而且調用它 function printStr() { $func = function( $str ) { echo $str; }; $func( 'some string' ); }printStr(); //例二 //在函數中把匿名函數返回,而且調用它 function getPrintStrFunc() { $func = function( $str ) { echo $str; }; return $func; } $printStrFunc = getPrintStrFunc(); $printStrFunc( 'some string' ); //例三 //把匿名函數當作參數傳遞,而且調用它 function callFunc( $func ) { $func( 'some string' ); } $printStrFunc = function( $str ) { echo $str; }; callFunc( $printStrFunc ); //也能夠直接將匿名函數進行傳遞。若是你瞭解js,這種寫法可能會很熟悉 callFunc( function( $str ) { echo $str; } );