如何在在PHP函数中使用关键字 ?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (47)

我一直在检查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”的使用也是正确的。

使用闭包,要访问函数上下文之外的变量,需要使用use函数明确授予函数的权限。在这种情况下,它意味着你正在授予函数访问$ tax和$ total变量的权限。

你会注意到,$ tax作为getTotal函数的参数传递,而$ total设置在定义闭包的上方。

另外要指出的是,$ tax作为副本传递,而$ total通过引用传递(通过在前面追加&sign)。按引用传递允许闭包修改变量的值。在这种情况下,任何税收价值的变化只会在收盘价内有效,而实际价值总额。

用户回答回答于

当你在PHP中声明一个匿名函数时,你需要告诉它周围作用域(如果有的话)中的哪些变量应该关闭--它们不会自动关闭函数体中提到的任何作用域内的词法变量。

扫码关注云+社区

领取腾讯云代金券