關於閉包的概念之PHP_已遷移

閉包是能夠包含自由(未綁定到特定對象)變量的代碼塊;這些變量不是在這個代碼塊內或者任何全局上下文中定義的,而是在定義代碼塊的環境中定義(局部變量)。「閉包」 一詞來源於如下二者的結合:要執行的代碼塊(因爲自由變量被包含在代碼塊中,這些自由變量以及它們引用的對象沒有被釋放)和爲自由變量提供綁定的計算環境(做用域)。在 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;
} );
相關文章
相關標籤/搜索