我找到了这样的代码,但找不到它的作用
$callback = function ($pricePerItem) use ($tax, &$total) {
$total += $pricePerItem * ($tax + 1.0);
};
php文档只说
'use' 关键字也适用于闭包结构:
但没有解释它实际上做了什么。
它控制范围。在这种情况下,变量$tax
和$total
在匿名函数之外声明。因为它们列在 use 子句中,所以可以从内部访问它们。
& 符号使变量完全共享 - 例如,在闭包内所做的更改将反映在外部范围中。在 的情况下$tax
,变量是一个副本,因此不能在闭包内更改。
大多数支持匿名函数的其他语言默认只有词法范围,但由于 PHP 已经有其他范围规则,这会产生各种奇怪的情况,破坏向后兼容性。作为一种手段,这个 - 相当尴尬 - 解决方案已经到位。
检查这个 - http://php.net/manual/en/functions.anonymous.php,如果匿名函数想要使用局部变量(对于您的代码,它是$tax
and $total
),它应该use
用来引用它们。