我正在检查一些PHP 5.3.0功能,并在网站上遇到了一些看起来很有趣的代码:
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); }
作为匿名函数的示例之一。
有人知道吗?任何文件?它看起来很邪恶,应该使用它吗?
这就是 PHP 表达闭包的方式。这根本不是邪恶的,事实上它非常强大和有用。
基本上,这意味着您允许匿名函数在其范围之外“捕获”局部变量(在这种情况下,$tax以及对 的引用$total)并将它们的值(或在$total引用$total自身的情况下)作为状态保存在匿名函数本身。
$tax
$total