PHP技巧篇之閉包(匿名函數(shù))

你可能聽說過閉包二字,也聽說過匿名函數(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ù)

先說到這里吧,有機會再深入,說到這里對于一些人來說感覺都會有點懵逼吧~~

PHP技術(shù)交流群:578390369
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容