CakePHP5 を試してみます。
https://book.cakephp.org/5/en/quickstart.html
上記の Tutorial にならって進めます。日本語ページは古い箇所が少しありそうなので、英語ページを見たほうが良さそうです。
SQLite3 を使うのは、Turso を使ってみたいと思っているからです。
Turso はマルチテナントSaaSのDBとして、とても魅力的です。
この記事でわかること
- CakePHP5 アプリケーションのスケルトン作成方法がわかります
- CakePHP5 で SQLite3 を使うための設定方法がわかります
- CakePHP5 で PHPStan を使うための手順がわかります
- この記事内のソースは以下で公開しています
各種バージョンは以下です。
| バージョン | |
|---|---|
| PHP | 8.4.16 |
| CakePHP5 | 5.3.1 |
| Composer | 2.9.3 |
Composer の取得
以下のサイトから composer.phar ファイルをダウンロードし、今回の作業ディレクトリへ配置します。
https://getcomposer.org/download/
Docker, Docker Compose の準備
コンテナを使って開発するので、Dockerfile と docker-compose.yml を準備します。
Dockerfile は CakePHP5 のスケルトン作成が動く最低限のインストール内容としています。
FROM php:8.4-cli
RUN apt-get update
RUN apt-get install -y unzip sqlite3
RUN apt-get install -y libicu-dev \
&& docker-php-ext-install intl
docker-compose.yml も最低限です。
CakePHP のコンソールコマンドで開発サーバーを立ち上げるときに利用するポート 8765 をポートフォワードします。
services:
cli:
build: .
container_name: cli
working_dir: /app
tty: true
volumes:
- ./:/app:cached
ports:
- "8765:8765"
これで準備完了です。
以下でコンテナを立ち上げ、コンテナ内に入ります。以降はコンテナ内で実施します。
docker compose up -d
docker exec -it cli bash
CakePHP5 アプリケーションのスケルトン作成
コンテナ内で以下のコマンドを実行して CakePHP5 アプリケーションのスケルトンを作成します。
cakephp/app:5.* とするのが重要です。 cakephp/app:5 でスケルトンを作成すると CakePHP5.0 系のスケルトンとなり、CakePHP5.3 系を動作させるためには一部コードを変更することになります。
php composer.phar create-project cakephp/app:5.* cms
作成したら、cms ディレクトリへ移動しましょう。
cd ./cms
SQLite3 の設定
SQLite3 の設定は簡単です。
url を記載するだけです。記載したファイル(DBファイル)は、実際に tmp ディレクトリ配下へ作成されます。
'Datasources' => [
'default' => [
'url' => env('DATABASE_URL', 'sqlite://127.0.0.1/tmp/products.sqlite'),
],
'test' => [
'url' => env('DATABASE_TEST_URL', 'sqlite://127.0.0.1/tmp/tests.sqlite'),
],
],
動作確認
開発サーバーを立ち上げることで、ホスト側のブラウザから http://localhost:8765 で確認することができます。
bin/cake server -H 0.0.0.0
PHPStan の導入
Composer 経由で PHPStan を導入できます。
開発時のみ利用するので、--dev オプションを付けています。
php ../composer.phar require --dev phpstan/phpstan
CakePHP 固有の記述を PHPStan に理解してもらうために、追加のライブラリ cakedc/cakephp-phpstan をインストールします。
phpstan/extension-installer も入れることで、phpstan.neon への記載を省略できます。
php ../composer.phar require --dev phpstan/extension-installer cakedc/cakephp-phpstan
解析レベルは 8 から max へ変更しました。いったん厳しくしておいて、不便であれば弱めていこうと思っています。
どうしても消せない指摘は ignoreErrors で除外対象としています。
parameters:
level: max
treatPhpDocTypesAsCertain: false
bootstrapFiles:
- config/bootstrap.php
paths:
- src/
ignoreErrors:
-
identifier: argument.type
path: src/Application.php
-
identifier: missingType.iterableValue
paths:
- src/Model/Table/*
これで、以下のコマンドで PHPStan が動くようになります。
php ../composer.phar check
さいごに
CakePHP5 での CMS チュートリアルを試す準備ができました!