hnwさんのエントリーで「見直されるべきPHP5の組み込みイテレータ」というお話がありました。RegexIterator AppendIterator NoRewindIterator SplFileObjectについて説明していただいていました。イテレーターに振る舞いを追加するところが面白いです。 組み込みイテレータの中には、他にも気になるクラスやメソッドがたくさんあります。他に面白いものを見つけた人は是非教えてください。また、多数のクラスやインターフェースが関係しているので、これはデザインパターンで言うと何かな、と考えるのも面白いと思います。 http://d.hatena.ne.jp/hnw/20090523 確かに、面白いんです。それに、これが「面白い」じゃなくて、「普通」になってくれたらなぁという気はします。 ひとくちにSPLといってもライブラリやフレームワーク内での頻出度に差が
Piece Network 1 SPL入門 - SPLで学ぶPHP5のオブジェクト指向 - 関山隆介<rsky0711@gmai.com> http://d.hatena.ne.jp/rsky/ SPLとは ✤ Standard PHP Library ✤ PHP5から導入された標準クラスライブ ラリ ✤ 各種イテレータ ✤ ファイル、ディレクトリ ✤ 例外クラス SPLの基盤 ✤ PHP5 (Zend Engine 2) で強化された オブジェクト指向機能 ✤ インターフェイスとイテレータをよく 使っている ✤ メソッド実装の強制、APIの共通化 ✤ foreachによる反復処理 内容 I. SPL関数紹介 II. SPL例外クラス紹介 III. SPLインターフェイス紹介 IV.SPLクラス紹介&使用例 V. まとめ SPL関数 SPL関数 __autoload系 spl_autol
PHPには5.0.0以降SPL (Standard PHP Libray)という枠組みが導入されています。これにより、Iteratorインターフェースを実装したクラスのインスタンスであれば、foreach文で配列と同じように取り扱えます。自分でクラスを作るときもIteratorを実装すれば使うのが楽ですし、コードも読みやすくなると思います。 また、PHPに標準で組み込まれているクラスにはIteratorを実装しているものが多数あります。たとえば僕の手元のPHP5.2.9には24個のイテレータがあり、そのうちいくつかは十分に実用的なクラスです。ただ、日本語の資料が少ないせいか、かなり知名度は低いように思います。本記事では4つの便利な組み込みイテレータを紹介します。 SPLのクラスにはデザインパターンの考えが多く含まれています。特に、イテレータを元にイテレータを作るような使い方は、保守性の高い
これまで、Iteratorインターフェイスとはどのようなものか、どのように利用するのかについて簡単に説明した。ここでイテレーション処理をIteratorクラスとして実装することのメリットを考えておきたい。 前項でも触れたが、コレクションへ単純にアクセスしていく方法でイテレーション処理を実装すると、データを加工する処理をループ内に記述することになり、データ構造やオブジェクトの構造に依存した処理が埋め込まれる。このため、データの利用個所が増えれば増えるほど、データ構造やその処理方法が変化した場合に煩雑な問題を抱えてしまう。 これを回避するために用いられるのが、データの取得・加工に関する処理をすべてオブジェクト内に隠蔽(いんぺい)してしまい、外部へはイテレーションに必要な繰り返し処理のためのAPIを提供する方法だ。 SPLのIteratorインターフェイスは、外部への統一APIとしてのメソッドを
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く