一:匿名函數(shù) (在php5.3.0 或以上才能使用)
php中的匿名函數(shù)(Anonymous functions), 也叫閉包函數(shù)(closures), 允許指定一個(gè)沒有名稱的函數(shù)。最常用的就是回調(diào)函數(shù)的參數(shù)值。(http://php.net/manual/zh/functions.anonymous.php)
匿名函數(shù)的定義:
$closureFunc = function(){    .... };eg: 把匿名函數(shù)賦值給變量,通過變量來調(diào)用
 $closureFunc = function($str){   echo $str;  };  $closureFunc('hello world!');輸出:hello world!
二:閉包
2.1 將匿名函數(shù)放在普通函數(shù)中,也可以將匿名函數(shù)返回,這就構(gòu)成了一個(gè)簡單的閉包
function closureFunc1(){    $func = function(){        echo 'hello';    };    $func();}closureFunc1();//輸出: hello2.2 在匿名函數(shù)中引用局部變量
function closureFunc2(){    $num = 1;    $func = function(){        echo $num;    };    $func();}closureFunc2();//Notice: Undefined variable: num上面的函數(shù)運(yùn)行后,會(huì)報(bào)Notice錯(cuò)誤,說明我們不能在匿名函數(shù)中這樣使用局部變量,這時(shí)候就要引用一個(gè)php的關(guān)鍵字 use, 代碼如下
function closureFunc2(){    $num = 1;    $func = function() use($num){        echo $num;    };    $func();}closureFunc2();//輸出: 12.3 返回匿名函數(shù)
function closureFunc3(){    $num = 1;    $func = function() use($num){        echo $num;    };    return $func;}$func = closureFunc3(); //函數(shù)返回匿名函數(shù)$func(); //然后我們在用$func() 調(diào)用//輸出: 12.4 當(dāng)我們在返回匿名函數(shù)時(shí)候怎么給匿名函數(shù)傳參呢? 其實(shí)跟普通函數(shù)傳參數(shù)一樣
function closureFunc4(){    $num = 1;    $func = function($str) use($num){        echo $num;        echo '';        echo $str;    };    return $func;}$func = closureFunc4();$func('hello, closure4');//輸出://1//hello, closure42.5 怎么用閉包來改變上下文引用的變量值?
function closureFunc5(){    $num = 1;    $func = function() use($num) {        echo '';        $num++;        echo $num;    };    echo '';    echo $num;    return $func;}$func = closureFunc5();$func();$func();$func();//輸出:// 1// 2// 2// 2看上面的輸入結(jié)果,顯然沒有達(dá)到目的, 其實(shí)只要加一個(gè) & 引用符號就可以了
function closureFunc5(){    $num = 2;    $func = function() use(&$num) {        echo '';        $num++;        echo $num;    };    echo '';    echo $num;    return $func;}$func = closureFunc5();$func();$func();$func();//輸出:// 2// 3// 4// 52.6 把匿名函數(shù)當(dāng)作參數(shù)傳遞
function callFunc($func){    $func('argv');}callFunc(function($str){    echo $str;})//輸出:// argvPHP編程        鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。
新聞熱點(diǎn)
疑難解答
圖片精選