cakephp console application 拡張tips
DESCRIPTION
CakePHP勉強会@福岡TRANSCRIPT
CakePHP Lightning Talks 2009.3.13 1
CakePHP Console Application 拡張Tips
Kenichirou Oyama (k1LoW)
CakePHP Lightning Talks 2009.3.13 2
自己紹介type:
プログラマlanguage:
PHP 2y+ / CakePHP 2y / etc..EmacsのCakePHPマイナーモードcake.elを作っていたりします
membership:Fusic Co.,Ltd >> http://fusic.co.jp
codecheck.in >> http://trac.codecheck.inand 101000code / 3rdSTONE
CakePHP Lightning Talks 2009.3.13 3
CakePHPコンソールアプリケーション
bakeに代表されるCakePHPがもつ"shellから実行する"アプリケーション"
PHPスクリプトShellクラスを継承している
CakePHP Lightning Talks 2009.3.13 4
bakeCakePHPのソースコード自動生成コンソールアプリケーション
データベースの情報からModel,View,Controllerだけでなくテストケースの雛形も生成してくれる
CakePHP Lightning Talks 2009.3.13 5
i18nCakePHPの多言語機能用のpoファイル自動生成コンソールアプリケーション
"__('Model Name')"のようにくくられた文字列をパースしてpoファイルを自動作成文字列に対応した翻訳文字列を設定すれば、システム全体に反映されるpoファイル:(例えば)英語とその訳語の対を保持している多言語対応用辞書ファイル
CakePHP Lightning Talks 2009.3.13 6
bakeの便利さ生成したソースは生成プログラムが正しければ必ず動くCakePHP1.2から生成するソースのテンプレートが切り出されている
cake/console/templates/1.1系のdecorate.phpのように、より使いやすいソースを生成するbakeに拡張が可能。
CakePHP Lightning Talks 2009.3.13 7
demo
CakePHP Lightning Talks 2009.3.13 8
i18nの便利さ文言の統一が1ファイルの管理のみで可能(DBでも可能)__('ERORR:01')といったエラーコードなどでもあとで1行設定するだけで日本語メッセージに変更可能__('ERORR:01')と__('ERORR:02')といったシステム的には異なるエラーコードをあとで2行設定するだけで同じ日本語メッセージに変更可能
CakePHP Lightning Talks 2009.3.13 9
demo
CakePHP Lightning Talks 2009.3.13 10
bake+i18n Tipsbakeしてそのまま(少なくとも管理画面では)使えるような形にtemplatesを拡張
必ず__()で囲める部分は囲んだソース生成をするようにする(i18nとの連携のため)
各メンバーは開発中もi18nの活用をあらかじめ想定したコーディングを進める(必ず__()で囲む)適宜poファイルに変換文字列を設定していく
CakePHP Lightning Talks 2009.3.13 11
bake+i18n Tips初めは英語やエラーコードの羅列
機能を優先的に実装開発に余裕が出てきたところで変換文字列を設定していくソースコードが増える度にpoファイルを更新していく多言語機能の使い方としてはイレギュラーな活用
CakePHP Lightning Talks 2009.3.13 12
bake+i18n初めは英語やエラーコードの羅列
機能を優先的に実装余裕が出てきたところで変換文字列を設定していくソースコードが増える度にpoファイルを更新していく多言語機能の使い方としてはイレギュラーな活用
CakePHP Lightning Talks 2009.3.13 13
poファイルのマージ問題
現状のCakePHPのi18nコンソールにはpoファイルのマージ機能はない(はず)
上書きのみ今まで設定した変更文字列が消えてしまう。
CakePHP Lightning Talks 2009.3.13 14
$cake merge2つのpoファイルをマージする
PHPのarray_merge()を使用bakeライクインターフェース
Shellクラスを継承して作成マージファイルのパスを初期値として設定可能
がんがんマージできる
CakePHP Lightning Talks 2009.3.13 15
demo
CakePHP Lightning Talks 2009.3.13 16
おわりにCakePHPはすごい。自動生成は楽。でももっと楽にできるはず。
そのためなら苦労は厭わない。楽できたらその分CakePHPのコードを読んで、もっと楽できる道を探せる(「ソース読め」の精神)。
CakePHP Lightning Talks 2009.3.13 17
ご静聴ありがとうございました