CakePHP 5 : Bake で MVC を作ってみる
はじめに
今回は 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 テーマでは、一覧、詳細、新規、編集の画面 (アクション) が自動生成されます。
また同時にテストファイルが作成されるので、必要ない場合は--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
参考資料
おわりに
今回は Bake を使った MVC の自動生成を紹介しました。Bake は以前のマイグレーションの作成でも使ったように、他にも様々な機能があります。もっと勉強して記事にしたいと思います!
Discussion