你可能聽說過閉包二字,也聽說過匿名函數(shù),可是它們究竟是什么高大上的東西呢?
閉包和匿名函數(shù)在PHP5.3.0中引入的(注意你的PHP版本!),實際上匿名函數(shù)與閉包是兩個概念,不過在PHP中我們不講究這么多,匿名函數(shù)也稱為閉包函數(shù),說白了就是一個沒有名稱的函數(shù),我們在回調(diào)函數(shù)中經(jīng)常會用到(閉包不等價于匿名函數(shù),經(jīng)驗豐富者不要挑刺)。

Closure.jpg
場景一之匿名初窺
<?php
$closure = function($param){
return 'Hello ' . $param;
};
echo $closure('Artist');
執(zhí)行結(jié)果

php匿名函數(shù)
我們看到$closure是一個變量,我們寫了一個沒有名字的函數(shù),然后把該函數(shù)賦值給了一個變量,大括號后面加了個分號,這個變量就擁有了魔力!
場景二之回調(diào)大法
array_map(callable $callback, array $arr)這個函數(shù)為數(shù)組的每個元素應(yīng)用回調(diào)函數(shù)。
<?php
$closure = array_map(function($fruit){
return 'I love %s' . $fruit;
}, ['apple', 'banana', 'orange']);
print_r($closure);
執(zhí)行結(jié)果

php匿名函數(shù)
閉包沒有出現(xiàn)之前,我們可以單獨創(chuàng)建一個函數(shù),然后把它引用回調(diào),但是這么寫就把一件事情分成了兩個場景來實現(xiàn),不夠優(yōu)(zhuang)雅(bi)~
場景三之狀態(tài)綁定,額,可能只有我自己這么稱呼這個用法吧~在PHP中調(diào)用閉包對象的bindTo方法或者使用use關(guān)鍵字,把狀態(tài)綁定到PHP閉包上,下面仔細看代碼。
<?php
$loveFunc = function($woman){
return function($man) use ($woman){
return sprintf('%s, %s love you.', $woman, $man);
};
};
$love = $loveFunc('TianTian');
echo $love('I');

closure.jpg
你說如果我不用use呢,這不是在函數(shù)內(nèi)部嗎?為啥不讓我用!那真是沒地兒講理去了,馬上給你個樣兒看!

php匿名函數(shù)
先說到這里吧,有機會再深入,說到這里對于一些人來說感覺都會有點懵逼吧~~