PHP巧用call_user_func避免全域性變數汙染
阿新 • • 發佈:2019-08-10
我們在編寫複雜的業務邏輯中,經常需要對陣列做迴圈處理。例如:
$array = [
'crazymus', 'tom', 'jim'
];
foreach ($array as $key => $value) {
echo $key, PHP_EOL;
echo $value, PHP_EOL;
}
但是這樣有個不好的地方,會引入一些不必要的變數,如$key和$value。程式設計中有個原則就是儘可能減少上下文中的變數數目,以免出現變數覆蓋的風險。
我們可能封裝一個方法來完成,但是對於一個複用性不大的邏輯,封裝的意義不大。
於是,PHP的call_user_func和匿名函式就登場了!
$array = [
'crazymus', 'tom', 'jim'
];
call_user_func(function () use ($array ){
foreach ($array as $key => $value) {
echo $key, PHP_EOL;
echo $value, PHP_EOL;
}
});
$key和$value就像是一個封閉空間裡產生的變數,對外部沒有影響,這樣我們可能隨意建立變數,也不用擔心和外部變