在功能中使用关键字
可能重复:
在Php 5.3.0中,“使用”标识符的功能是什么? 一个理智的程序员应该使用它吗?
我一直在检查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
关键字,但在这里看起来不同。
谢谢。
在这种情况下,“使用”的使用也是正确的。
通过闭包,要访问函数上下文之外的变量,需要使用use函数明确授予函数的权限。 在这种情况下,它意味着您正在授予函数访问$ tax和$ total变量的权限。
您会注意到,$ tax作为getTotal函数的参数传递,而$ total设置在定义闭包的上方。
另外要指出的是,$ tax作为副本传递,而$ total通过引用传递(通过在前面追加&sign)。 按引用传递允许闭包修改变量的值。 在这种情况下,任何税收价值的变化只会在收盘价内有效,而实际价值总额。
当你在PHP中声明一个匿名函数时,你需要告诉它它应该关闭的周围范围的哪些变量(如果有的话) - 它们不会自动关闭函数体中提到的任何范围内的词法变量。 use
后的列表只是要关闭的变量列表。
这意味着你的内部函数可以使用来自外部函数的变量$ tax和$ total,而不仅仅是它的参数。
链接地址: http://www.djcxy.com/p/10139.html