🥦

CakePHP 5 : Bake で MVC を作ってみる

2023/11/06に公開

はじめに

今回は Bake コマンドを使ってコードを生成する方法を紹介します。

Bake コマンドには色々な種類がありますが、今回は「初めて Bake を使う方」に向けて、モデル、テンプレート、コントローラーの3つに絞って Bake の使い方を説明します。

バージョン情報

  • CakePHP: 5.0.1

Bake とは

Bake は CakePHP の機能の1つで、コードの自動生成をサポートしてくれるコマンドラインツールです。
手動で一からファイルを作成しても問題はないのですが、Bake コマンドを使えば自動的に複数のファイルを作成したり、コードを作成できたりするメリットがあります。

モデルを作成

予めテーブルをデータベースに作成しておきます。(例として Articles テーブルにします)
以下のコマンドを実行すると、ArticlesTable モデルを作成することができます。

bin/cake bake model Articles

実行後はテーブルとエンティティのファイルが保存されます。同時に tests ディレクトリにもテストファイルが生成されます。

  • src/Model/Entity/Article.php
  • src/Model/Table/ArticlesTable.php
  • tests/Fixture/ArticlesFixture.php
  • tests/TestCase/Model/Table/ArticlesTableTest.php

もしテストコードが必要でない場合は、以下のように--no-test--no-fixture オプションをつけると生成されません。

bin/cake bake model Articles --no-test --no-fixture

コントローラーを作成

下記のコマンドで、src/Controller ディレクトリに ArticlesController.php が作成されます。

bin/cake bake controller Articles

標準の Bake テーマでは、一覧、詳細、新規、編集の画面 (アクション) が自動生成されます。
https://book.cakephp.org/4/ja/controllers.html#id3

また同時にテストファイルが作成されるので、必要ない場合は--no-testオプションをつけます。

bin/cake bake controller Articles --no-test

テンプレートを作成

テンプレートファイルを作るには下記のコマンドを使います。

bin/cake bake template Articles

コントローラー内に定義されているアクションに対応するテンプレートファイルが templates/Articles ディレクトリに作成されます。
今回作成されるのは以下の4つです。

  • index.php
  • view.php
  • add.php
  • edit.php

一括で作成する方法

上記のように個別ではなく、まとめてファイルを作るコマンドもあります。

bin/cake bake all articles

参考資料

https://book.cakephp.org/bake/3/en/usage.html

おわりに

今回は Bake を使った MVC の自動生成を紹介しました。Bake は以前のマイグレーションの作成でも使ったように、他にも様々な機能があります。もっと勉強して記事にしたいと思います!

Discussion