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就像是一个封闭空间里产生的变量,对外部没有影响,这样我们可能随意创建变量,也不用担心和外部变量出现冲突了~

转载于:https://my.oschina.net/crazymus/blog/3086091

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值