1. ホーム
  2. php

[解決済み] PHPでは、クロージャとは何ですか?なぜ "use "識別子を使用するのですか?

2022-03-20 05:39:05

質問

を調べているところです。 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);
}

の例のように 匿名関数 .

どなたかご存知ですか?何か文書がありますか?そして、それは邪悪に見えますが、それは今まで使用されるべきですか?

解決方法は?

これは、PHPが クロージャ . これは決して邪道ではなく、むしろ非常に強力で便利なものです。

基本的にこれが意味するところは、匿名関数がローカル変数を "capt"することを許可していることです(この場合。 $tax への参照と $total の場合),そのスコープ外でその値を保持します. $total への参照は $total それ自身)を、匿名関数自体の状態として扱います。