この公式ページの例を通して概要を把握し、PHP Iterator を理解しようとしていました。誰かが私にそれを説明できますか?ページに示されているように、何に使用され、結果がどのように計算されるかについて。
PHP Iterator へのリンク: http://php.net/manual/en/class.iterator.php
この公式ページの例を通して概要を把握し、PHP Iterator を理解しようとしていました。誰かが私にそれを説明できますか?ページに示されているように、何に使用され、結果がどのように計算されるかについて。
PHP Iterator へのリンク: http://php.net/manual/en/class.iterator.php
PHP Iterator は本質的にシーク可能なオブジェクトです。foreach
その主な特性は、飛行色を通過し、本来の動作を正確に行うことです。次のようなことをする代わりに:
foreach (myFunction() as $v) {
doSomethingWith($v);
}
Iterator (Seekable、Rewindable など) を作成して作業を簡素化し、必要なものをそこにバインドして、作業を 1 回だけ行うことができます。
Iterator オブジェクトを作成して呼び出すとforeach ($object as $r)
、次のことが (順番に) 実行されます。
$object->rewind()
)$object->valid()
、必要に応じてループを終了します$object->current()
次$object->key()
のオブジェクトに移動します。$object->next()
SPLインターフェースというだけあって当然のシンプルな構造。事実上、その唯一の目的は、オブジェクトが通過できるようにすることforeach
です。それ以上でもそれ以下でもありません。それらはさまざまなものに使用できます-最近、IMAPサーバーから生成されたメッセージをループするプロセスを簡素化するために1つを使用しました(また、処理を1回だけ行うようにしました)。
PHP には既に定義されているイテレータがいくつかあります。私のお気に入りはおそらくRecursiveDirectoryIterator
です。これにより、ディレクトリを再帰的にたどる負担が劇的に軽減されます。
これが役に立ったことを願っています。ご不明な点がございましたら、お気軽にコメントしてください。詳しく説明します。