出典:こんにちは学習ネットワーク敏感と熱心なフォーラムはwww.piaodoo.comお互いから学ぶことを歓迎します
また、閉鎖機能(閉鎖)として知られているPHP関数匿名(無名関数)では、一時的な関数名が指定されていない作成することができます。パラメータは、多くの場合、コールバック関数(コールバック)として使用します。もちろん、他の環境のアプリケーションがあります。
注意:PHPのPHP5.3閉鎖は唯一のバージョンである後
クロージャとは何ですか?クロージャは、遊離(特定のオブジェクトに結合していない)コードブロック変数を含むことができ、又はこれらの変数のいずれかは、このブロック内のグローバルコンテキストで定義されていない、むしろ周囲コード定義ブロックで(ローカル変数)が定義されています。(自由変数は、コードブロックに含まれる自由変数とそれらが参照するオブジェクトが解放されていないため)コードのブロックを実行すると、自由変数バインディングを提供するために「閉鎖」は、以下の二つを参照することにより鋳造されましたコンピューティング環境(スコープ)。私たちは人気の言うことができ、プログラミングの分野では:関数は、この動作は、クロージャと呼ばれ、親関数内のローカル変数を使用することができます。
PHP構文無名関数と正常な機能と同じで使用される閉鎖が、匿名の手紙や閉鎖パッケージの数は、実際にオブジェクトの機能を装っています。
匿名関数は:あなたが呼び出すことができるので、そこには関数名の匿名関数はオブジェクトが渡され、変数に代入することはできないが、まだ無名関数が関数であることを、あなたはまた、匿名関数は、コールバック関数やメソッドとして特に適しているパラメータを渡すことができます....
クロージャーは:環境が存在しない場合でも閉鎖は、パッケージ内の閉鎖遺跡の状態を作成したときに、パッケージの周りの状態の関数です。
注:理論的には、閉鎖や無名関数は異なる概念である、しかし、PHPは、同じ概念とみなされます。
構文の閉鎖は、キーワードのみを使用すると、接続の閉鎖や外部変数を使用することに留意すべきである、非常に簡単です。
=関数()の使用を$($ B){ // TO-DO }。
いくつかの例は、クロージャを達成するために以下に示します。
//例:パラメータ渡しとして匿名関数、それが呼び出し 関数callFunc($ FUNC)を{ $ FUNC( "文字列一部\ R&LT \ N-"); } $ printStrFunc =関数(STR $){ エコー$ STR; } ;
//例II:それはまた、匿名関数に直接渡すことができます。あなたは、JSを知っていれば、そのようなアプローチは非常に精通してもよい callFunc($ printStrFunc); callFunc(関数($ STR){ エコー$ STR; });
//例3:キーワードと外部接続閉鎖変数:USEの 機能getMoney(){ $ = RMB 1; $ =ドル6; $ FUNC =関数()の使用($ RMB){ エコー$ RMB; エコー$ドル; }; $ FUNC(); } getMoney(); //出力:1つの //エラー、変数dorllarを見つけることができません
//例4:匿名関数の変数コンテキストを変更する 機能getMoney(){ $ = RMB 1; $ FUNC =関数()の使用($&RMB){ エコー$ RMB "<BR>"; // $人民元の価値プラスA $人民元++; }; $ FUNC(); エコー$元; } getMoney(); //出力: // 1 // 2
閉鎖構文と実装は非常に単純で、それを十分に活用することは容易ではありませんが。
クロージャの良い使用、我々は助けることができます
- 図1は、減少foreachループコードであります
- リダクション機能パラメータ2
- 3リフティング再帰関数
概要
この記事のためにすべてのことだ、私はサポート敏感で、熱心なフォーラム/こんにちは学習ネットワークをありがとう、この論文の内容は習得したり、作業するために私たちのすべてのための学習のいくつかの基準値を持っている願っています。あなたが詳細をお知りになりたい場合は、下記の関連リンクを参照してください。
元のアドレスは次のとおりです。http://www.piaodoo.com/thread-3557-1-1.html