【CakePHP】scaffoldとbakeの違い

こんちには、フリーのITエンジニアでWeb(PHP:Laravel)のバッグエンドをメインにフルリモートでお仕事させて頂きながら、個人開発でiOSアプリを作っているMoritaです。

CakePHPのBakeは使用したことがあったのですが、scaffoldとの違いがわからなかったので調べてみました。

Bakeとは

まずはBakeがどのようなものかおさらいしておきます。

Bakeはコマンドプロンプトやターミナルを使用して、コマンド操作でデータベースのテーブルに合わせてModel、Controller、Templateの雛形を自動生成してくれる機能です。

Controllerならindex、edit、deleteなどのアクションが実装された状態でファイルが作成されます。
簡易的な実装なので、実際にサービスを作る際には実装を追加する必要があると思いますが、それでも位置から作成するようりも手間を省くことができます。

さらに便利なのが、Bakeコマンドを入力する際に、ファイルをすべて作成するか、一部のファイルのみを作成するかを指定することができます。

Scaffoldとは

次にscaffoldですが、自分ではまだ試したことがないですが、Controllerにテーブル名とscaffoldを宣言すればCakePHPのlib内にあるテンプレートファイルを使用してテーブルに対しての簡単な参照・書込ができる画面と機能を提供してくれる機能のようです。

public $name = 'TestTable';
public $scaffold;

Bakeとの大きな違いはファイルを実際に生成しないところです。

Scaffoldで使用しているviewファイル自体はlib>Cake>View>Scaffoldsの中にあります。
viweを修正したい場合はファイルをプロジェクトにコピーしてオーバーライドで上書きをして使用します。
(CakePHP3ではscaffoldは削除されたようです。変わりのスキャフォールディングプラグインが公開されています。 )

まとめ

Bakeはコマンドによって必要なファイルを、簡易的な実装がされた状態で実際に生成するもの。
ScaffoldはControllerに最低限の設定をすれば、必要なファイルはCakePHPのライブラリから使用する。
ただし、CakePHP3ではScaffoldは削除されているため、それに変わるものを使用する場合はスキャフォールディングプラグインを使用することになります。

コメント

  1. 名無し より:

    参照リンクがwpログインのURLとなっているのでご報告です。
    大変有益な記事でした。ありがとうございました。

タイトルとURLをコピーしました