上級PHPコラム『Standard PHP Library(SPL) IteratorAggregateインターフェイス編』(PHP上級試験対策)
PHP技術者認定機構の吉政でございます。
PHP技術者認定機構の認定スクールであるヒューマンリソシアが
私が企画した、古庄親方のPHPコラム『Standard PHP Library(SPL) IteratorAggregateインターフェイス編』を公開しています。
私は技術者ではないので、古庄親方のコラムを見ながら、ただ納得するばかりなのですが、技術って奥が深くて面白いですね。技術を学びながら、いろいろ作れるのって、本当に楽しそうです。きっと、腕を上げればあげるほど、楽しさは増すのだと思います。
技術者を志している方は、私が言うまでもないですが、是非学習を続けてください。
さて、今日もPHP上級テクニックのご紹介です。興味がある方はどうぞ!
###
前回はIteratorインタフェースについて学びました。
Iteratorインタフェース、foreachで使えるように実装するのはいいのですが「データを扱うクラス」と「反復処理を担うクラス」が同じクラス内に機能として同居しています。
もちろんこれはこれで間に合ううちはよいのですが、例えば「あるデータ群を扱うクラス」があり、反復処理にはいくつか「異なるルールでの反復処理をしたい」可能性、なんて事もありえます。
例えば買い物かごで「外税内税」とか「課税対象と対象外」とか「贅沢税のつくものとつかないもの」とか。
コラム12回目でやりましたが、「複数の要素を内包するオブジェクトのすべての要素」という概念をもう少しだけ拡張して「複数の要素を内包するオブジェクトの、任意の条件に当てはまるすべての要素に順にアクセスする方法を提供する」というものがIteratorで提供できたら、それはよりいっそう便利なものにならないでしょうか?
この考えを元に出来ているのがIteratorAggregateインターフェイスです。
GoFのデザインパターンをよくご存じの方は或いは「デザパタではそもそもコンテナオブジェクトの要素を列挙する手段を独立させることによってコンテナの内部仕様に依存しない反復子を提供することを目的としてるんだから当たり前だ」と思う向きもあろうかと思いますが、その「当たり前」がようやく出てきた、と読み取っていただければと思います。
では早速IteratorAggregateインターフェイスを見てみましょう。
(この続きは以下のコラム本文をご覧ください)
http://resocia.jp/column/309/