1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CakePHP5 を試してみる(PHPStan, SQLite3)

1
Posted at

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 をポートフォワードします。

docker-compose.yml
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 ディレクトリ配下へ作成されます。

cms/config/app_local.php
    '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 で除外対象としています。

cms/phpstan.neon
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 チュートリアルを試す準備ができました!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?