匿名関数 (匿名関数) はクロージャとも呼ばれ、指定された名前なしで関数を一時的に作成できます。ほとんどの場合、callback function(callback) パラメーターの値として使用されます。もちろん、他のアプリケーションもあります。
匿名関数は現在、Closure クラスを通じて実装されています。
クロージャ関数は変数の値としても使用できます。 PHP は、この expression を組み込みクラス Closure の object インスタンスに自動的に変換します。クロージャ オブジェクトを変数に代入する方法は、通常の変数代入の構文と同じで、最後にセミコロンも追加されます:
クロージャは親スコープから変数を継承することができます。 このような変数は、use language 構造を使用して渡す必要があります。 PHP 7.1 以降、スーパーグローバル、$this、またはパラメーターと同じ名前を持つ変数を渡すことはできません。
具体的な形式は以下のとおりです:
$a = function($arg1, $arg2) use ($variable) { // 声明函数闭包到变量$a, 参数为$arg1, $arg2 ,该闭包需使用$variable变量 }
具体的な使用例は以下のとおりです:
<?php $result = 0; $one = function() { var_dump($result); }; $two = function() use ($result) { var_dump($result); }; // 可以认为 $two这个变量 本身记录了该函数的声明以及use使用的变量的值 $three = function() use (&$result) { var_dump($result); }; $result++; $one(); // outputs NULL: $result is not in scope $two(); // outputs int(0): $result was copied $three(); // outputs int(1) ?>
以上がPHP クロージャ インスタンスの分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。