function
キーワードを使用して定義され、その後、パラメーターの括弧(もしあれば)と関数本体を含む巻き毛のブレースのペアが使用されます。 PHPでは、周囲のスコープが実行が終了した後でも、周囲のスコープから変数にアクセスできるため、閉鎖は特に強力です。これは、変数を超える閉鎖として知られています。 簡単な例は次のとおりです。 $ closure = function()use($ message){echo $ message; }; $ closure(); //出力:外からこんにちは! ?>
この例では、 $ closure
は閉鎖です。閉鎖の範囲外で定義されている変数 $メッセージ
にアクセスします。 use($ message)
キーワードは重要です。閉鎖は、親の範囲から $メッセージ
変数を「キャプチャ」するように明示的に指示します。 use($ message)
なしでは、 $ message
が閉鎖の範囲内で使用できないように、phpはエラーをスローします。
閉鎖に引数を渡すこともできます:
<code class="php">&lt;?php greet = function($ name){echo&quot; 。 $ name。 &quot;!&quot ;; }; $ greet(&quot; world&quot;); //出力:こんにちは、世界! ?&gt; </code>
閉鎖は、phpの通常の機能よりもいくつかの利点を提供します:
変数をクロージャーに渡す:
変数は、通常の関数と同様に、関数定義のパラメーターリストを介してクロージャーに渡されます。周囲のスコープからの変数の場合、 use
キーワードを使用して、括弧内に囲まれた変数のリストが使用されます。 use
ステートメント内の変数名の前に&amp;
を使用して、値(デフォルト)または参照によって変数を渡すことができます。 $ closure = function($ y)use($ x){return $ x $ y; }; echo $ closure(5); // outputs:15 $ closurebyref = function(&amp; $ z)使用(&amp; $ x){$ x = 20; $ z = $ x * 2; }; $ w = 5; $ closurebyref($ w); echo $ x; //出力:20 echo $ w; // outputs:40?&gt;
閉鎖から変数を渡す:
通常の機能と同様に、 return
ステートメントを使用して閉鎖から値を返すことができます。返された値は、クロージャーの外側の変数に割り当てることができます。
<code class="php">&lt;?php $ closure = function($ a、$ b){return $ a * $ b; }; $ result = $ closure(4、5); // $ resultは20 echo $ resultになります。 ?&gt; </code>
はい、閉鎖は、PHPでのコールバックやイベント処理などの高度な機能で頻繁に使用されます。柔軟性と簡潔な構文のため、これらのシナリオには完全に適しています。
コールバック:閉鎖は、呼び出し可能な引数を期待する関数へのコールバックとして渡すことができます。たとえば、 array_map
、 array_filter
、および usort
のような配列関数は、多くの場合、配列要素を処理するためのコールバックとして閉鎖を取ります。 $ squaredNumbers = array_map(function($ n){return $ n * $ n;}、$ numbers); print_r($ squarednumbers); // outputs:array([0] =&gt; 1 [1] =&gt; 4 [2] =&gt; 9 [3] =&gt; 16 [4] =&gt; 25)?&gt; イベント処理:イベントシステムを使用したフレームワークまたは適用を使用して、イベントを使用して、閉じることができます。イベントが発生すると、対応する閉鎖が実行されます。これにより、分離およびモジュラーコードが可能になります。たとえば、仮想イベントシステムで:
<code class="php">&lt;?php //仮説イベントシステム - 実際のイベントシステムに置き換えます$ eventmanager-&gt; onログイン。&quot;}); ?&gt; </code>
要約すると、クロージャーはPHPの多用途で強力な機能であり、コードの読みやすさ、柔軟性を高め、高度なプログラミングパターンで効率的な使用を可能にします。
以上が閉鎖とは何ですか(匿名関数)、PHPでそれらを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。