初めまして、最近入社したtetsuです。
プログラマブログ初投稿ですが、よろしくお願いします。
さて、CakePHPでBakeを利用した際に出力されるモデルやコントローラーなどですが
初期状態ではCakePHPに最低限のファイルで構成されています。
Bake後に開発に応じて、モデルやコントローラーにコードを記述し、コンポーネントなどを追加していくと思います。
しかし、Bake後に毎回、その手の作業をするのは作業効率が悪いと感じました。
そこで、Bake時に出力される各ファイルのテンプレートをカスタマイズする方法について記載します。
まずはBake時のテンプレートとなる場所ですが、「cakeconsoletemplates」ディレクトリに以下のディレクトリがあります。
※上記はWindowsのパスです。
・「default」ディレクトリ
モデルやコントローラー、ビューのコードテンプレート
・「skel」ディレクトリ
Bake実行初期時に出力されるアプリケーションの基本ディレクトリ群
毎回利用するコンポーネントやビヘイビアなどをBake時に出力させたい場合は「skel」ディレクトリの対応するディレクトリに置くことで、Bake時に出力されます。
例)コンポーネントファイルを置く場合
「skelcontrollerscomponents」ディレクトリにコンポーネントファイルを置きます。
また、モデルやコントローラーにメソッドやコメントなどを追加したい場合は「default」ディレクトリの対応するファイルをカスタマイズすることでBake時に出力させることができます。
例)モデルにBakeで出力した日付をコメントアウトで追記する場合
「defaultclasses」の「model.ctp」ファイルに下記のようにコードを追記します。
対象ファイルの23から24行目
echo "<?phpn"; ?>
class <?php echo $name ?> extends <?php echo $plugin; ?>AppModel {
を次のように記述すると、Bake時の時刻が記載され、開発開始の時間が管理できます。
echo "<?phpn"; ?>
/*---------------------------------------------------------------------------------------
* <?php if(!empty($plugin)){echo 'Plugin ['.$plugin.'] ';}?><?php echo $name ?>モデル
*
* @created $Date: <?php echo date("Y/m/d");?>$
---------------------------------------------------------------------------------------*/
class <?php echo $name ?> extends <?php echo $plugin; ?>AppModel{
上記のように、開発ルールに合わせたテンプレートを用意すると、さらに作業効率を上げることができると思います。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。