Standard PHP Library(SPL) IteratorAggregateインターフェイス
- 編集部の見解や意向と異なる内容の場合があります
- 編集部は内容について正確性を保証できません
- 画像が表示されない場合、編集部では対応できません
- 内容の追加・修正も編集部では対応できません
ヒューマンリソシア株式会社はコラム「Standard PHP Library(SPL) IteratorAggregateインターフェイス」を公開しました。
前回はIteratorインタフェースについて学びました。
Iteratorインタフェース、foreachで使えるように実装するのはいいのですが「データを扱うクラス」と「反復処理を担うクラス」が同じクラス内に機能として同居しています。
もちろんこれはこれで間に合ううちはよいのですが、例えば「あるデータ群を扱うクラス」があり、反復処理にはいくつか「異なるルールでの反復処理をしたい」可能性、なんて事もありえます。
例えば買い物かごで「外税内税」とか「課税対象と対象外」とか「贅沢税のつくものとつかないもの」とか。
コラム12回目でやりましたが、「複数の要素を内包するオブジェクトのすべての要素」という概念をもう少しだけ拡張して「複数の要素を内包するオブジェクトの、任意の条件に当てはまるすべての要素に順にアクセスする方法を提供する」というものがIteratorで提供できたら、それはよりいっそう便利なものにならないでしょうか?
この考えを元に出来ているのがIteratorAggregateインターフェイスです。
GoFのデザインパターンをよくご存じの方は或いは「デザパタではそもそもコンテナオブジェクトの要素を列挙する手段を独立させることによってコンテナの内部仕様に依存しない反復子を提供することを目的としてるんだから当たり前だ」と思う向きもあろうかと思いますが、その「当たり前」がようやく出てきた、と読み取っていただければと思います。
では早速IteratorAggregateインターフェイスを見てみましょう。
IteratorAggregate extends Traversable {
/* メソッド */
abstract public Traversable getIterator ( void )
}
この続きは以下をご覧ください
http://resocia.jp/column/309/
ソーシャルもやってます!