1

この公式ページの例を通して概要を把握し、PHP Iterator を理解しようとしていました。誰かが私にそれを説明できますか?ページに示されているように、何に使用され、結果がどのように計算されるかについて。

PHP Iterator へのリンク: http://php.net/manual/en/class.iterator.php

4

1 に答える 1

5

PHP Iterator は本質的にシーク可能なオブジェクトです。foreachその主な特性は、飛行色を通過し、本来の動作を正確に行うことです。次のようなことをする代わりに:

foreach (myFunction() as $v) {
   doSomethingWith($v);
}

Iterator (Seekable、Rewindable など) を作成して作業を簡素化し、必要なものをそこにバインドして、作業を 1 回だけ行うことができます。

Iterator オブジェクトを作成して呼び出すとforeach ($object as $r)、次のことが (順番に) 実行されます。

  1. イテレータを巻き戻します ( を呼び出します$object->rewind())
  2. で現在の操作が有効かどうかを確認し$object->valid()、必要に応じてループを終了します
  3. ループが終了していない場合は、 and を使用して現在のアイテムとキーを返し、$object->current()$object->key()のオブジェクトに移動します。$object->next()
  4. GOTO ステップ 2

SPLインターフェースというだけあって当然のシンプルな構造。事実上、その唯一の目的は、オブジェクトが通過できるようにすることforeachです。それ以上でもそれ以下でもありません。それらはさまざまなものに使用できます-最近、IMAPサーバーから生成されたメッセージをループするプロセスを簡素化するために1つを使用しました(また、処理を1回だけ行うようにしました)。

PHP には既に定義されているイテレータがいくつかあります。私のお気に入りはおそらくRecursiveDirectoryIteratorです。これにより、ディレクトリを再帰的にたどる負担が劇的に軽減されます。

これが役に立ったことを願っています。ご不明な点がございましたら、お気軽にコメントしてください。詳しく説明します。

于 2013-03-28T11:32:51.547 に答える