PHP5 配列をメソッドチェインで再帰処理するクラス
CakePHPを使っていると、データ構造が多階層の配列で管理されていることが多く、一括で処理をしたい場合などに度々再帰処理を実装することがあります。
通常であれば、array_map系の関数を使って再帰的に処理を記述することになりますが、
- 毎回array_mapを使うのは面倒だし、もっと簡潔に記述したい
- 個別のグローバル関数・各メソッドを連続して簡単に利用したい
という理由で、以下のように記述できるクラスを作成しました。
(クラスのソースコードは最後に記述しています)
-
// $arrの全ての要素にtrimと半角カナ変換を実施
-
ArrayMap::create($arr)->trim()->mb_convert_kana('KV');
-
-
// $arrの全ての要素に「先頭:」という文字を追加
-
ArrayMap::create($arr)->sprintf('先頭:%s');
※PHP5のマジックメソッドを使って実現していますので、PHP4系では使えません
※通常の手続き型で実装する場合は「array_walk_recursive」「array_map recursive」などで検索するといろいろ参考情報があります。
CakePHP MySQLのバックアップ(mysqldump)を行うバッチ
CakePHP1.2からコマンドラインからCakeが起動できるようになりました。
この機能を使って、MySQLのバックアップを行う簡単なスクリプトを作成してみました。
データベースの接続には、/app/config/database.phpの接続情報を利用しています。
複数選択型のプルダウン
単一選択のプルダウンを複数選択型に変更する為のTipsです。
複数選択型と言っても従来のselectタグではなく、チェックボックスを
使ったプルダウン表示に変更させる方式です。
(prototype.jsを利用しています)
言葉だけではイメージし難いと思いますので、サンプルを参照してください。
上側に従来のプルダウン、下側に同じ要素の複数選択型プルダウンが表示されています。
CakePHP Tips:ドラッグ&ドロップでデータを並び替える
マスターのメンテナンス機能やCMS系の機能を開発する際に、データの並びをユーザーが自由に設定できるようにしたいという要件はよくあります。
CakePHPとprototype.jsを使えば、ドラッグ&ドロップでデータの並びを設定することが簡単に実装できます。
今回のサンプルはこちらで確認できます。
id, name(果物名), position(position) の3カラムのfuruitsテーブルのデータを並び替えています。