イテレータの使いどころ
「Perlの教科書やRubyの教科書で、なんとなく見かけたあれが―― - どんなジレンマ」を読んでなんとなく。
PHPのイテレータ は記述量が多いからやだなあ。 Pythonのイテレータ は関数2つ書けばいいし、 ジェネレータ を使えば関数1つで済むのに。
というわけで、 Pythonだとなんでもかんでもジェネレータにしたくなり、 PHPだと配列に入れてから返すことが多くなりがちなんですけど、 PHPであえてイテレータを使うのはどういうときかなと考えると、
- 配列に読み込むにはサイズが不安。たくさんあるかも。
- 「次」を読み込むところを隠蔽したい。 fgetcsv()とか mysql_fetch_array()とか $state->fetch()だとか そういうのをクラス外から意識させたくない。
の2つの要求が出たときかなあ、と。 微妙にレアケース。