LIGのメルマガ、はじめました!
LIGのメルマガ、はじめました!

作業効率を上げる!CakePHP Bake時のファイルのテンプレートをカスタマイズする方法

tetsu

初めまして、最近入社した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{

 

上記のように、開発ルールに合わせたテンプレートを用意すると、さらに作業効率を上げることができると思います。