タグ

ブックマーク / www.exgear.jp (4)

  • CakePHP1.2 Behaviorでモデルのメソッドキャッシュを行う : エクスギア Blog

    CakePHP1.2から新たにBehavior(振る舞い)クラスが実装され、モデルに共通の処理を定義することが可能になりました。 今回はBehaviorを使ってモデルの各メソッドの結果を自動的にキャッシュするクラス(CacheBehavior)を検討してみました。 CakePHPでは標準でビューキャッシュをサポートしていますが、Cacheクラスを利用することで簡単にキャッシュ機能を組み込むことができます。 ソースコードは少し長いので、一番最後に記述することにします。 CacheBehaviorの目的 CakePHPでの開発では、 ・まず動作するアプリケーションを構築する ・パフォーマンス上ボトルネックになっている部分のチューニングを行う という手法が一般的だと思います。 そこで、CacheBehaviorはチューニング時に実装していくことを想定し、構築時のソースコードになるべく

  • PHP5 配列をメソッドチェインで再帰処理をするクラス : エクスギア Blog

    CakePHPを使っていると、データ構造が多階層の配列で管理されていることが多く、一括で処理をしたい場合などに度々再帰処理を実装することがあります。 通常であれば、array_map系の関数を使って再帰的に処理を記述することになりますが、 毎回array_mapを使うのは面倒だし、もっと簡潔に記述したい 個別のグローバル関数・各メソッドを連続して簡単に利用したい という理由で、以下のように記述できるクラスを作成しました。 (クラスのソースコードは最後に記述しています) PLAIN TEXT PHP: // $arrの全ての要素にtrimと半角カナ変換を実施 ArrayMap::create($arr)->trim()->mb_convert_kana('KV'); // $arrの全ての要素に「先頭:」という文字を追加 ArrayMap::create($arr)->sprintf('先頭

    k1LoW
    k1LoW 2009/10/01
    method chain
  • CakePHP Behaviorでバリデーション周りの効率化を図る : エクスギア Blog

    CakePHPでバリデーションを使う際、標準(CakePHP1.2)のままでも十分開発はできますが、大きめのプロジェクトや複数のプロジェクトでも汎用的かつ効率的に使えるようにできないかと検討しました。 バリデーション改善の目的 エラーメッセージを日語化し共通化・デフォルト化したい 独自バリデーションメソッドを共通化したい ルール配列を簡単に記述したい(項目が多いとソースが長くなり過ぎて見通しがよくない) バリデーションの前に自動で整形処理をしたい(半角英数変換やカタカナ変換など) 実装にあたって バリデーションメソッドの共通化については、 cakephperさんの日記:よく使う独自バリデーションルールをプラグインのbehaviorにまとめる に記載してありますように、プラグインのbehaviorで管理するほうが良いと思いますが、今回は弊社で過去に実装した通常のbehavior(Bas

  • エクスギア技術系サイト PHP5限定 CakePHPのView内の関数処理を綺麗に記述する(邪道でしょうか?)

    PHP5限定 CakePHPのView内の関数処理を綺麗に記述する(邪道でしょうか?) CakePHPなどビューをPHPで記述する場合に、PHPの標準関数を利用することが多々あります。標準関数自体は豊富なものが揃ってますが、連続して処理を行いたい場合にどうしても読みづらい記述になってしまいます。PHP5にはクラス内にAutoloadの機能があり、これを利用して連続して関数処理を行う方法を検討します。 今回の事例ある変数に長文のテキスト文字列が入っていて、それを表示する際に以下の処理を行うケースを例とします。 文字列を先頭から100文字にカットする 英数字を半角にする HTMLエスケープ処理をする 改行コードをbrタグに変換する 表示PHPの標準関数だけで(一行で無理矢理)記述した場合 <?php echo nl2br(htmlspecialchars(mb_convert_kana(mb_

    k1LoW
    k1LoW 2009/04/09
    method chain
  • 1