可能的重复:
在 PHP 5.3.0 中,函数“Use”标识符是什么?一个理智的程序员应该使用它吗? https://stackoverflow.com/questions/1065188/in-php-5-3-0-what-is-the-function-use-identifier-should-a-sane-programmer-use
我一直在研究 PHP 中的闭包,这引起了我的注意:
public function getTotal($tax)
{
$total = 0.00;
$callback =
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);
}
有人请给我解释一下使用use
在这段代码中。
function ($quantity, $product) use ($tax, &$total)
当我搜索时use
在 PHP 中,它发现use
关键字,它在名称空间中使用,但在这里看起来有所不同。
Thanks.
在这种情况下,“使用”的使用也是正确的。
使用闭包,要访问函数上下文之外的变量,您需要使用 use 函数显式授予函数权限。在这种情况下,这意味着您授予函数对 $tax 和 $total 变量的访问权限。
您会注意到 $tax 作为 getTotal 函数的参数传递,而 $total 则设置在定义闭包的行上方。
另一件需要指出的是 $tax 作为副本传递,而 $total 通过引用传递(通过在前面附加 & 符号)。通过引用传递允许闭包修改变量的值。在这种情况下,对 $tax 值的任何更改都只会在闭包内有效,而 $total 的实际值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)