でじくる。

主にプログラムの話題などを扱うブログです。

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そのまま使えばいいじゃん、

とか思ったりもするわけですが、

データとイテレータを分けて持つことで、

一つのデータを複数のイテレータで扱うことができる、と。