ホームページ >バックエンド開発 >PHPチュートリアル >PHPのクロージャ(Closure)匿名関数の予備検討、closure_PHPチュートリアルの予備検討
クロージャに関しては、クロージャ関数 (クロージャ) とも呼ばれる匿名関数を考える必要があるようです。主にそれに依存しています。次のように匿名関数を宣言します:
ちなみに、PHP がクロージャーを導入する前は、匿名関数を作成できる関数 create function もありましたが、コードのロジックは文字列としてしか記述できず、見た目が非常にわかりにくく、保守が困難だったため、使用する人はほとんどいませんでした。 。
1. クロージャを実装します
通常の関数のパラメータとして匿名関数を渡すこともできます。これにより、単純なクロージャが実装されます。
以下に3つの例があります
2. クロージャと外部変数を接続するキーワード: USE
クロージャは、コード ブロックのコンテキストでいくつかの変数と値を保存できます。 PHP のデフォルトでは、匿名関数は、それが配置されているコード ブロック内のコンテキスト変数を呼び出すことはできませんが、 use キーワードを使用する必要があります。
別の例を見てみましょう:
ご覧のとおり、useキーワード内でdollarが宣言されておらず、この匿名関数では取得できませんので、開発時はこの点に注意してください。
匿名関数でコンテキスト変数を変更できるのではないかと考える人もいるかもしれませんが、それは不可能であることがわかりました:
ああ、use が参照しているのは変数の単なるコピーであることがわかりました。ただし、コピーではなく、変数への完全な参照が必要です。
この効果を実現するには、変数の前に & 記号を追加するだけです:
これで、匿名関数はコンテキスト変数を参照できるようになりました。匿名関数を外部に返すと、匿名関数は use で参照した変数を保存しますが、外部からはこれらの変数を取得できなくなります。このようにすると、「クロージャ」の概念がより明確になるかもしれません。
説明に従って上記の例を変更します:
まとめ
PHP クロージャーの機能には大きな驚きはありません。実際、CLASS を使用することで、JS クロージャーとは比べものにならないほど強力な機能を実現できます。未来。ただし、匿名関数は依然として非常に便利です。たとえば、preg_replace_callback などの関数を使用する場合、コールバック関数を外部で宣言する必要はありません。
PHP の匿名関数 (クロージャー関数) について新たに理解できましたか? この記事がヒントになれば幸いです。