PHPのIteratorとIteratorAggregate
PHPのSPLにIteratorとIteratorAggregateというインターフェースがあります。
Iteratorはそのまんまですね。
Iteratorインターフェースを実装したクラスは指定されているメソッドを実装すれば
foreachで回したりできるようになる、と。
それは以前から知っていて使ったりもしていました。
ただ、似たような名前のIteratorAggregateはちゃんと調べたことがありませんでした。
で、調べてみた、というのが今日の話。
http://www.shigeweb.jp/php/project_p/?section=php5oop&page=iteration
見直されるべきPHP5の組み込みイテレータ
http://d.hatena.ne.jp/hnw/20090523
Iteratorインターフェイスを使うメリット
http://www.atmarkit.co.jp/fcoding/articles/php5dev/03/php5dev03b.html
まあ、一つ目に紹介した記事を読めば全部書いてあるんですが、
IteratorAggregateはgetIteratorメソッドで
Iteratorインターフェースを実装したクラスのオブジェクトを返しておけば、
IteratorAggregateインターフェースを実装したクラスのオブジェクト自体を
foreachで回すことができるというものです。
普通にIteratorそのまま使えばいいじゃん、
とか思ったりもするわけですが、
データとイテレータを分けて持つことで、
一つのデータを複数のイテレータで扱うことができる、と。