ホームページ >バックエンド開発 >PHPチュートリアル >PHPのクロージャ(Closure)匿名関数の予備検討、closure_PHPチュートリアルの予備検討

PHPのクロージャ(Closure)匿名関数の予備検討、closure_PHPチュートリアルの予備検討

WBOY
WBOYオリジナル
2016-07-12 08:59:17833ブラウズ

PHP のクロージャ (Closure) 匿名関数の予備探索、クロージャの予備探索

クロージャに関しては、クロージャ関数 (クロージャ) とも呼ばれる匿名関数を考える必要があるようです。主にそれに依存しています。次のように匿名関数を宣言します:

リーリー

ちなみに、PHP がクロージャーを導入する前は、匿名関数を作成できる関数 create function もありましたが、コードのロジックは文字列としてしか記述できず、見た目が非常にわかりにくく、保守が困難だったため、使用する人はほとんどいませんでした。 。

1. クロージャを実装します
通常の関数のパラメータとして匿名関数を渡すこともできます。これにより、単純なクロージャが実装されます。

以下に3つの例があります

リーリー

2. クロージャと外部変数を接続するキーワード: USE
クロージャは、コード ブロックのコンテキストでいくつかの変数と値を保存できます。 PHP のデフォルトでは、匿名関数は、それが配置されているコード ブロック内のコンテキスト変数を呼び出すことはできませんが、 use キーワードを使用する必要があります。

別の例を見てみましょう:

リーリー

ご覧のとおり、useキーワード内でdollarが宣言されておらず、この匿名関数では取得できませんので、開発時はこの点に注意してください。

匿名関数でコンテキスト変数を変更できるのではないかと考える人もいるかもしれませんが、それは不可能であることがわかりました:

リーリー

ああ、use が参照しているのは変数の単なるコピーであることがわかりました。ただし、コピーではなく、変数への完全な参照が必要です。

この効果を実現するには、変数の前に & 記号を追加するだけです:

リーリー

これで、匿名関数はコンテキスト変数を参照できるようになりました。匿名関数を外部に返すと、匿名関数は use で参照した変数を保存しますが、外部からはこれらの変数を取得できなくなります。このようにすると、「クロージャ」の概念がより明確になるかもしれません。

説明に従って上記の例を変更します:

リーリー

まとめ
PHP クロージャーの機能には大きな驚きはありません。実際、CLASS を使用することで、JS クロージャーとは比べものにならないほど強力な機能を実現できます。未来。ただし、匿名関数は依然として非常に便利です。たとえば、preg_replace_callback などの関数を使用する場合、コールバック関数を外部で宣言する必要はありません。

PHP の匿名関数 (クロージャー関数) について新たに理解できましたか? この記事がヒントになれば幸いです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1099063.html技術記事 PHP のクロージャ (Closure) 匿名関数に関する予備研究 クロージャというと、クロージャ関数 (クロージャ) とも呼ばれる匿名関数を考える必要があります。PHP のクロージャ実装は主にそれに依存しているようです。 ...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。