在PHP中,什么是闭包,为什么它使用“use”标识符?我在查一些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);}的例子之一匿名函数.有人知道这件事吗?有文件吗?它看起来很邪恶,它应该被使用吗?
3 回答
潇湘沐
TA贡献1816条经验 获得超6个赞
function ($quantity) use ($tax, &$total) { .. };
闭包是分配给变量的函数,因此您可以传递它。 闭包是一个单独的名称空间,通常不能访问此命名空间之外定义的变量。来了 使用
关键词: 使用
允许您访问(使用)闭包内的后续变量。 使用
是早期绑定。这意味着变量值是在定义闭包时复制的。所以修改 $tax
在闭包内部没有外部效果,除非它是指针,就像对象一样。 您可以将变量作为指针传入,如 &$total
..这样,修改 $total
确实有外部影响,原始变量的值会发生变化。 在闭包内定义的变量也不能从闭包外部访问。 闭包和函数具有相同的速度。是的,你可以在你的脚本中全部使用它们。
- 3 回答
- 0 关注
- 498 浏览
添加回答
举报
0/150
提交
取消