1. 程式人生 > >PHP巧用call_user_func避免全域性變數汙染

PHP巧用call_user_func避免全域性變數汙染

我們在編寫複雜的業務邏輯中,經常需要對陣列做迴圈處理。例如:

$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就像是一個封閉空間裡產生的變數,對外部沒有影響,這樣我們可能隨意建立變數,也不用擔心和外部變