问题

我正在检查一些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本身的情况下)作为匿名函数本身的状态.

  相同标签的其他问题

phpclosures