PHP では、クロージャとも呼ばれる匿名関数 (匿名関数) を使用すると、指定された名前なしで関数を一時的に作成できます。コールバック関数のパラメータとしてよく使用されます。もちろん、他のアプリケーションもあります。
注: php クロージャーは PHP5.3 バージョン以降でのみ使用可能です
クロージャーとは何ですか?
クロージャは、自由な (特定のオブジェクトにバインドされていない) 変数を含めることができるコードのブロックです。これらの変数は、このコード ブロック内やグローバル コンテキスト内では定義されず、定義コード内で定義されます。環境で定義されたブロック (ローカル変数)。 「クロージャ」という言葉は、実行されるコードのブロック (自由変数がブロック内に含まれるため、これらの自由変数とそれらが参照するオブジェクトは解放されません) と自由変数に提供されるバインディングの組み合わせに由来します。コンピューティング環境 (範囲)。プログラミングの分野では、平たく言えば、子関数が親関数のローカル変数を使用できる、この動作をクロージャと呼びます。
PHP の匿名関数とクロージャは通常の関数と同じ構文を使用しますが、匿名関数とクロージャは実際には関数に見せかけたオブジェクトです。
匿名関数:
は名前のない関数です。匿名関数は、渡される変数やオブジェクトに割り当てることができます。ただし、匿名関数も関数であるため、呼び出され、パラメータを渡します。匿名関数は、関数またはメソッドのコールバックとして特に適しています。
クロージャ:
は、次の場合に周囲の状態をカプセル化する関数を指します。クロージャが存在しない場合でも、環境は存在しませんが、クロージャにカプセル化された状態はまだ存在します。
注: 理論上、クロージャと匿名関数は異なる概念です。ただし、PHP ではこれらを同じ概念として扱います。
クロージャの構文は同等です。注意する必要があるキーワードは use だけです。これはクロージャと外部変数を結び付けます。
$a = function() use($b) { //TO-DO };
クロージャの実装方法の例をいくつか示します。
//例一:把匿名函数当做参数传递,并且调用它 function callFunc( $func ) { $func( "some string\r\n" ); } $printStrFunc = function( $str ) { echo $str; };
//例二:也可以直接将匿名函数进行传递。如果你了解js,这种写法可能会很熟悉 callFunc( $printStrFunc ); callFunc( function( $str ) { echo $str; } );
クロージャの構文と実装は非常に単純ですが、使いこなすのは簡単ではありません。
クロージャの利点:
1. foreach ループ コードの削減
2. 関数パラメータの削減
3. 再帰関数のロック解除
推奨チュートリアル:PHP ビデオ チュートリアル
以上がPHPのクロージャ関数とはの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。