暇人じゃない

最近使用した CakePHP Plugin/Behavior/Component メモ

今年もいよいよ1ヶ月を切りましたね。 寒くなってきたので、年越しに備えてコタツを出したところです。

年越しと言えば、CakePHP Advent Calendar も盛り上がっていて楽しいです。来年は参加したい! “CakePHP Advent Calendar 2010を開催!” フォーラム - CakePHP Users in Japan http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=2510&forum=16&post_id=6341

さて、今回は良い区切りなので、最近使用した CakePHP の Plugin/Behavior/Component をメモとして残しておきます。

Plugin

Debugkit

cakephp/debug_kit - GitHub https://github.com/cakephp/debug_kit

CakePHP を使用して開発する際には必ず入れておきたいプラグイン。 Django でいう django-debug-toolbar みたいなものです。 パラメーター一覧、Controller からセットされているデータ、SQL クエリなど、他にも色々な 情報を表示できます。

参考になりそうなサイト: 超便利なDebugkitを画面キャプチャ付きで解説 - cakephperの日記(CakePHP, MongoDB, Lithium) http://d.hatena.ne.jp/cakephper/20090604/1244112188

Cakeplus

ichikaway/cakeplus - GitHub https://github.com/ichikaway/cakeplus

view でいちいち nl2br(h($hoge)) をしなくて良いように controller で処理してくれたり、日本語を使用する際の便利なバリデーションルールなどを追加できるお役立ち plugin 。

個人的には、日本語を使用したバリデーションルールの集まりである「AddValidationRule」とバリデーションのエラーメッセージを(国際化というよりかは)共通化できる「ValidationErrorI18n」に非常に助けられました。

参考になりそうなサイト: CakePHPのプラグイン、cakeplus pluginの機能と使い方 - kanonjiの日記 http://d.hatena.ne.jp/kanonji/20100906/1283763857

Search Plugin

CakeDC/search - GitHub https://github.com/CakeDC/search

名前の通り(?)、検索機能を簡単に実装できる plugin です。 少しだけクセはあったりしますが、一から検索機能を作るよりかはサクッと検索機能を実装することができます。

このブログで書いた記事:
CakePHP の Search Plugin で複数のモデルを使用する | 暇人じゃない
http://chocoby.jp/blog/2010/09/06/cakephp-search-plugin/

CakePHP の Search Plugin で HABTM なモデルを検索する | 暇人じゃない
http://chocoby.jp/blog/2010/10/25/cakephp-search-plugin-habtm/

参考になりそうなサイト: CakeDCのsearch pluginの記事が少ないので1個置いときますね。CakePHP Advent Calendar 2010 8日目 - kanonjiの日記 http://d.hatena.ne.jp/kanonji/20101208/1291819950

Media Plugin

davidpersson/media - GitHub https://github.com/davidpersson/media

ファイルのアップロード処理を比較的簡単に実装できる plugin 。 アップロードしたファイルに対してバリデーションを行ってくれたり、自動的にサムネイル画像を作成してくれます。

このブログで書いた記事:

CakePHP の Media Plugin で Call to undefined method Folder::ls() エラーが出るときの対処法 | 暇人じゃない
http://chocoby.jp/blog/2010/09/21/cakephp-media-plugin-call-to-undefined-method-folder-ls/

参考になりそうなサイト: mediaプラグインまとめ - 趣味の延長線 http://d.hatena.ne.jp/cake67/20100226/1267166535

Behavior

Containable Behavior

コンテイナブル :: 主要なビヘイビア :: マニュアル :: 1.2コレクション :: The Cookbook http://book.cakephp.org/ja/view/474/Containable

CakePHP 1.3 からコアの機能として入っている Behavior 。 説明のページを読んでみると分かりますが、設定されているアソシエーションを限定することができます。

アソシエーションは重くなりがちなので、この behavior や、find 時の fields オプションなどを使用することにより、パフォーマンスをかなり改善することができます。 ぜひとも活用したい behavior です。

Soft Deletable Behavior

Soft Deletable Behavior | The Bakery, Everything CakePHP http://bakery.cakephp.org/articles/mariano/2007/04/16/soft-delete-behavior

論理削除を簡単に実装できる behavior 。 この behavior を使用し、テーブルに deleted と deleted_date というフィールドを作成することにより delete() がフックされて、削除処理が行われた時は、deleted フィールドのフラグがセットされ、論理削除がされるようになります。

この behavior に関しては使用した、というよりかはちょっと試してみた、という程度です。結局自前で実装してしまいました。

参考になりそうなサイト: [CakePHP] SoftDeletable Behavior で論理削除 | Sun Limited Mt. http://blog.syuhari.jp/archives/1457

すいません。 behavior はこれだけです… 来年はもっと使って行きたいです。

Component

TransitionComponent

hiromi2424/TransitionComponent - GitHub https://github.com/hiromi2424/TransitionComponent

「入力画面→確認画面→登録」という、よくありがちな流れを簡単に作成することができる component 。 実装がすごく簡単で、感動しました。

参考になりそうなサイト: ページの遷移を管理するTransitionコンポーネント - 24時間CakePHP http://d.hatena.ne.jp/hiromi2424/20100219/1266554986

Qdmail + Qdsmtp

PHP高機能日本語メール送信ライブラリ・文字化けフリー - Qdmail - PHP::Mail Library , Quick and Detailed for Multibyte http://hal456.net/qdmail/ Qdsmtpとは - Qdsmtp-Simple SMTP Mailer for PHP http://hal456.net/qdsmtp/

単体では、メール送信ライブラリとして機能するのですが、CakePHP の component として動作させる事も可能です。

非常に簡単に日本語メールを送信する事ができるようになります。

cakephpexceptionnotifier

milk1000cc/cakephpexceptionnotifier - GitHub https://github.com/milk1000cc/cakephpexceptionnotifier

エラー発生時にメールで知らせてくれる component 。 Rails の Exception Notification みたいなものらしいです(使ったことがありませんが) Qdmail が必要になります。

参考になりそうなサイト: Exception Notifier コンポーネントを公開 - milk1000cc http://d.hatena.ne.jp/milk1000cc/20090421/1240263015

plugin / behavior / component を使用することによって簡単に機能を拡張できるのは フレームワークならではですね。

CakePHP Plugin だけでは無いですが、日本語の情報が少ないのが難点ですね。 やはり英語は重要だなぁ、と感じました。 Plugin を簡単に検索できるような日本語のまとめサイトがあったらいいなぁ、と思ったり。 CakeForge で十分か。