タグ

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

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

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

  • MongoDBでPHPのセッション管理をする : エクスギア Blog

    MongoDBはNoSQLと言われるドキュメント指向データベースとして有名です。 以前個人的にsymfony1系でのセッション管理をMongoDBで行うsfMongoSessionStrageというのを書いたのですが、もっと汎用的にインクルードするだけで普通のPHPスクリプトでも使えるように書き直してみたので紹介したいと思います。 MongoDBでセッション管理を行うメリット 単体サーバーでの運用ではメリットはほとんど無いと思います。メリットがあるのは複数台構成のサーバーでPHPのアプリケーションを運用する場合です。セッションのデータを通常のファイルベースで行うとアクセスしているWebサーバーにセッションデータが保存されます。そのため複数台構成の場合はアクセスするWebサーバーが異なってしまった場合にセッションデータを読み込めないという問題が発生します。そこでデータベースを利用してセッシ

  • PHPUnit と Selenium RCで機能テストをやってみる : エクスギア Blog

    PHPのテストライブラリとしては一番有名どころのPHPUnitと実際のブラウザをJavaScriptを使って画面遷移をテストすることができるSelenium RCを使って実際に結合テストを行ってみたので今回紹介したいと思います。 PHPUnit PHPUnitPHPの一番有名なテストライブラリです。テストケースを用意することで仕様変更にも強いアプリケーション開発が可能になります。 さまざまなことができるPHPUnitですが、PHPUnitだけでは画面遷移のような機能テストは難しいものです。 なぜなら、PHPだけで画面遷移を確認するためにはブラウザの動きをシミュレーションしたライブラリを使ったりしてテストする方法になってしまうからです。 たとえばsymfony1系ではsfTestBrowserというライブラリが用意されていてこのライブラリを利用することでテストが行えるようになっていますが、

  • CakePHP 携帯ライブラリと位置情報ライブラリを使った簡易GPS検索プラグイン「GeoSimple Plugin」 : エクスギア Blog

    CakePHPユーザー最大のイベントPHPMatsuriが近づいてきました。 今年は弊社も協賛として微力ながら応援させて頂きます。 だからという訳では無いのですが、久々のCakePHP関連の投稿です。 最近の携帯端末やiPhoneandroid携帯では標準でGPS機能が搭載されていますので、 このGPSを使った簡易位置検索(現在地から近隣のデータを検索)を行うプラグインを作成してみました。 ※プラグインでは以下のライブラリを利用しています。 ・携帯ライブラリ(Ktai Library) ・位置情報ライブラリ(Geomobilejp) ※検索方式は空間情報を利用したものではありません。三平方の定理で簡易的に距離を求めています。 事前準備1:携帯ライブラリの導入 CakePHPで携帯と言えばお馴染みの「Ktai Library」を利用してキャリア判別を行い、 各キャリア毎に

  • CakePHP zip圧縮コンポーネント : エクスギア Blog

    CodeIgniterの標準ライブラリにはZip圧縮クラスがあり、簡単に以下のような機能を実装することができます。 ・Zipアーカイブを作成し、サーバーに保存やダウンロードを行う ・サーバーのファイルやディレクトリをZipに追加 ・動的にテキストデータをZipに追加 このクラスをCakePHPのコンポーネントクラスとして利用できるように少々改良しました。 ソースコード /app/controllers/components/zip.php 利用方法 ZipCompornent(zip.php)を /app/controllers/components に配置。 コントローラー側で利用宣言を行います。

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

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

  • CakePHP コントローラーのアクションをコンポーネントにまとめる : エクスギア Blog

    業のほうが忙しく久々の更新になってしまいましたが小ネタです。 Cakeを使っていると最初はbakeやscaffoldを利用する機会がありますが、序々に利用頻度が減ってきました。(現在では殆ど使っていません) 理由としては、社内での共通のルールであったり、プロジェクト毎の特性を反映した雛型から複製して作成したほうが効率的になってきたということが大きいと思います。 ただ、bakeでの自動生成や複製方式だと初回は良いのですが、大規模なものになってくると、同様のソースが点在し一括での改修などが面倒なことになってきます。 ということで、明らかに同様の処理はscaffold風にコンポーネント化することにしました。 ※コンポーネントからコントローラーを制御する場合は、ロジックが分散すると見通しが悪くなりますので、ロジック全体を委譲できる場合に利用することをお勧めします。 実装例 今回の例として、

  • 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('先頭

  • 1