php 閉包實(shí)例解析

匿名函數(shù)(anonymous functions),也叫閉包函數(shù)(closures),允許 臨時(shí)創(chuàng)建一個(gè)沒有指定名稱的函數(shù)。最經(jīng)常用作匿名函數(shù)(callback)參數(shù)的值。當(dāng)然,也有其它應(yīng)用的情況。

匿名函數(shù)目前是通過?Closure?類來實(shí)現(xiàn)的。

閉包函數(shù)也可以作為變量的值來使用。PHP 會(huì)自動(dòng)把此種匿名函數(shù)轉(zhuǎn)換成內(nèi)置類?Closure?的匿名函數(shù)實(shí)例。把一個(gè) closure 對(duì)象賦值給一個(gè)變量的方式與普通變量賦值的語法是一樣的,最后也要加上分號(hào):

閉包可以從父作用域匿名函數(shù)變量。 任何此類變量都應(yīng)該用?use?語言結(jié)構(gòu)傳遞進(jìn)去。 PHP 7.1 起,不能傳入此類變量:?superglobals、?$this?或者和參數(shù)重名。

具體形式如下:

立即學(xué)習(xí)PHP免費(fèi)學(xué)習(xí)筆記(深入)”;

$a?=?function($arg1,?$arg2)?use?($variable)?{?  //?聲明函數(shù)閉包到變量$a,?參數(shù)為$arg1,?$arg2?,該閉包需使用$variable變量  }

具體用法實(shí)例如下:

<?php $result = 0;     $one = function()  { var_dump($result); };     $two = function() use ($result)  { var_dump($result); }; // 可以認(rèn)為 $two這個(gè)變量 本身記錄了該函數(shù)的聲明以及use使用的變量的值     $three = function() use (&$result)  { var_dump($result); };     $result++;     $one();  // outputs NULL: $result is not in scope  $two();  // outputs int(0): $result was copied  $three();  // outputs int(1)  ?>

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊10 分享