PHP5 配列をメソッドチェインで再帰処理するクラス

CakePHPを使っていると、データ構造が多階層の配列で管理されていることが多く、一括で処理をしたい場合などに度々再帰処理を実装することがあります。
通常であれば、array_map系の関数を使って再帰的に処理を記述することになりますが、

  • 毎回array_mapを使うのは面倒だし、もっと簡潔に記述したい
  • 個別のグローバル関数・各メソッドを連続して簡単に利用したい

という理由で、以下のように記述できるクラスを作成しました。
(クラスのソースコードは最後に記述しています)

PHP:
  1. // $arrの全ての要素にtrimと半角カナ変換を実施
  2. ArrayMap::create($arr)->trim()->mb_convert_kana('KV');
  3.  
  4. // $arrの全ての要素に「先頭:」という文字を追加
  5. ArrayMap::create($arr)->sprintf('先頭:%s');

※PHP5のマジックメソッドを使って実現していますので、PHP4系では使えません
※通常の手続き型で実装する場合は「array_walk_recursive」「array_map recursive」などで検索するといろいろ参考情報があります。

Read more