akkun_choi pedia
mindia › akkun_choi pedia › 単語

PHPのIterator

akkun_choi · 2009-12-24 更新 · 1 ポイント · 履歴(4)
第 2 版(2009-11-25 20:50:04 · akkun_choi)を表示しています。 最新版に戻る

Zend FrameworkはSPLのIterator使ってるのが多い。

実装すればforeachで回すことができる

getIterator()を持つ。他のiteratorを持っていて、それを使いたい場合にproxy的に使う。

ツリー構造をトラバースする時に使えそうだけど、まだ使う機会がない

インデックス指定ができる。例えばZend_Service_Amazon_ResultSetが実装している。

Iteratorをラップする。getInnerIteratorを持つ。

arrayのIteratorにしたいときに

OuterIteratorを実装。accept()でフィルタリングできる。callbackで指定できればわざわざクラス作らなくてもいいのになぁ。

指定位置から返したり、指定数を返したりできる。

例えばこんな感じで配列から指定条件を指定数取得できるんじゃね。
>|php|
$it = new LimitIterator(new MyFilterIterator(new ArrayIterator($array)), 0, 10);
class MyFilterIterator extends FilterIterator{
function accept(){
// return boolean
}
}
||<

参考

http://php.net/manual/ja/language.oop5.iterations.php
http://www.php.net/manual/ja/spl.iterators.php
http://devzone.zend.com/article/2565

履歴

タグ