我在看的PHP例子Closures上http://us1.php.net/manual/en/functions.anonymous.php
它提供了下面的示例代码并说明:
闭包还可以从父作用域继承变量.必须在函数头中声明任何此类变量.从父作用域继承变量与使用全局变量不同.全局变量存在于全局范围内,无论执行什么功能,它都是相同的.闭包的父作用域是声明闭包的函数(不一定是从中调用它的函数).请参阅以下示例:
我很困惑这是如何工作的. $quantity和$product变量似乎在我看来它们在Closure函数中是可用的.Parent Scope在这种情况下,这个getTotal()功能不是1个范围吗?

dec*_*eze 11
你误解了功能签名.$quantity并且$product是在调用函数时将传递给函数的常规参数,它们确实不存在于父作用域中,并不意味着.use ($tax, &$total)是来自父范围的已关闭变量.
$foo = 'foo'; // closed over variable
// vvvv
$func = function ($bar) use ($foo) {
// ^^^^
// regular function argument
return $foo . $bar;
};
echo $func('baz'); // "foobaz"
Run Code Online (Sandbox Code Playgroud)