问题描述
这就是PHP表示闭包的方式。这根本不是邪恶的,实际上它是强大而有用的。
基本上,这意味着您要允许匿名函数在其作用域之外“捕获”局部变量(在这种情况下$tax
为$total
),并将其值(或在$total
引用其$total
自身的情况下)保留为内部状态匿名函数本身。
解决方法
我正在检查一些PHP 5.3.0
功能,并在网站上浏览了一些看起来很有趣的代码:
public function getTotal($tax)
{
$total = 0.00;
$callback =
/* This line here: */
function ($quantity,$product) use ($tax,&$total)
{
$pricePerItem = constant(__CLASS__ . "::PRICE_" .
strtoupper($product));
$total += ($pricePerItem * $quantity) * ($tax + 1.0);
};
array_walk($this->products,$callback);
return round($total,2);
}
作为匿名函数的例子之一。
有人知道吗?有文件吗?而且看起来很邪恶,应该使用它吗?