cakephp console application 拡張tips

Post on 20-Jun-2015

2.922 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

ご静聴ありがとうございました

top related