Standard PHP Library(SPL) IteratorAggregateインターフェイス

ヒューマンリソシア

2015年7月30日 20:17

※この記事は読者によって投稿されたユーザー投稿のため、編集部の見解や意向と異なる場合があります。 また、編集部はこの内容について正確性を保証できません。
ヒューマンリソシア株式会社はコラム「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/
この記事のキーワード

人気記事トップ10

人気記事ランキングをもっと見る