CakePHP 4.0.0-RC1 で bake を試す
はじめに
昨日は、CakePHP 4.0.0-RC1 の composer を用いたインストール方法をご紹介しましたが、 今日は Bake コマンドを叩き、生成されたコードを見たり、画面を動かしてみました。
今日は、実際に試した bake のコマンドや、その実行結果などをご紹介します。
- XAMPP
- 7.3.5
- PHP
- 7.3.5
- Maria DB
- 10.1.40
- OS
- Win 10 Home 64Bit
1. help オプションでエラー
まずはヘルプを見てみようと思い、下記コマンドを叩いたら、早速エラーがでました。
> bin/cake bake --help
Exception: Class 'Cake\Command\HelpCommand' not found
In [\path\to\cakephp4\vendor\cakephp\bake\src\Command\EntryCommand.php, line 186]
ここはあまり深追いせず、bake all することに。
2. bake all を実行
2-1. テスト用のデータベースを作成
今回はサンプルとして、下記の articles と categories テーブルを作りました。
CREATE TABLE `articles` (
`id` int(10) UNSIGNED NOT NULL,
`category_id` int(10) UNSIGNED NOT NULL,
`date` date NOT NULL,
`title` varchar(255) NOT NULL,
`body` text NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `articles`
ADD PRIMARY KEY (`id`),
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
CREATE TABLE `categories` (
`id` int(10) UNSIGNED NOT NULL,
`name` varchar(255) NOT NULL,
`created` datetime NOT NULL,
`modified` datetime NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
ALTER TABLE `categories`
ADD PRIMARY KEY (`id`),
MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
2-2. bake all 実行
ここでは articles の例でご紹介します。実行したのは下記コマンドです。
> bin/cake bake all articles
下記ファイルが生成されました。
cms/
├ src/
│ ├ Controller/
│ │ └ ArticlesController.php
│ │
│ └ Model/
│ ├ Entity/
│ │ └ Article.php
│ │
│ └ Table/
│ └ ArticlesTable.php
│
├ templates/
│ └ Articles/
│ ├ add.php
│ ├ edit.php
│ ├ index.php
│ └ view.php
│
└ tests/
├ Fixture/
│ └ ArticlesFixture.php
│
└ TestCase/
├ Controller/
│ └ ArticlesControllerTest.php
│
└ Model/
└ Table/
└ ArticlesTableTest.php
フォルダ構成も、生成されたファイルも CakePHP 3 と大体同じですね。
template が src から出て、拡張子が ctp から php になっています。
ファイルの中身も CakePHP 3 に近いです。
1行だけ、見慣れないコードが目にとまりました。
3. “declare(strict_types=1)”って?
Bake されたコードの先頭には declare(strict_types=1) がついています。
見慣れなくてググったところ、解説されいる記事がすぐにみつかりました。
- declare(strict_types=1)の効力範囲について - Qiita
- https://qiita.com/Hiraku/items/734f0666ab3d34c52efa
タイプヒンティングをより厳密にするモードなんですね。
型を意識しない PHP のメリットを消しているような感じもしますが、やはり厳格にしたほうが堅牢なシステムが作れるので、良い変更かなと感じます。
4. おわりに
CakePHP 4 はまだ RC1 ですが、 Bake をすることは出来ました。今のところ大きな問題は発生していません。各画面を開いて軽く触ってみましたが、特にエラーが出ることもありませんでした。
まだ未完成な部分もありますが、十分に楽しめそうです。
Bake したコードのカスタムであれば手軽に始められるので、みなさんも試してみてください。