PHP
CakePHP
cakephp3

CakePHP3で.envに特化したプロジェクトの設定をしてみる

CakePHP3のプロジェクトテンプレートは汎用的なことを考えすぎていて、インストールしたあとの設定が複雑で難しくなっています。

.envファイルをLaravelと比べるだけでも分かりにくさが分かります。
CakePHP
Laravel

そこで.envに特化した特化したプロジェクトの設定をしてみました。

.envを使うために改善してみる

.envを使うパッケージを変更する

コミット
https://github.com/mosaxiv/cake-app/pull/1/commits/e10b96caaa8f4265ee24bf7c334b670dc966c55f

Cakeのコアコミッターの人が作っているからだと思うのですがデフォルトではjosegonzalez/dotenvのパッケージを入れているのですがvlucas/phpdotenvに入れ替えます

理由としては以下の2点です

パフォーマンスが良いこと

ベンチマークしてみるとvlucas/phpdotenvのほうがパフォーマンスが良いです。

josegonzalez/dotenvの挙動はハマる可能性がある

josegonzalez/dotenvの場合は.envでPHP_TRUE=trueのような定義をすると型をbool型に変換して環境変数をセットします。
このような動作をしてしまうとdotenvでセットした場合と本番環境などで直接環境変数をセットした場合で挙動が変わる可能性がありバグの原因となります

config/app.default.phpは不要

コミット
https://github.com/mosaxiv/cake-app/pull/1/commits/8510c51016b43b4c23a142e942ce07700046cbd8

.envで管理しているのに更にconfig/app.default.phpで管理する意味がないのでconfig/app.default.phpをリネームしてconfig/app.phpをgitで管理するようにします

.envファイルを綺麗に

コミット
https://github.com/mosaxiv/cake-app/pull/1/commits/723fbd165851d89c6c611b565502074ac70f6719
https://github.com/mosaxiv/cake-app/pull/1/commits/46d919beb7cad7e796c97ec9bea5d8c64f004c7e

.envで管理する必要のない値があったりDBの設定など分かりにくい書き方をしているので整理します

おまけ

エラーログのスキップ設定

コミット
https://github.com/mosaxiv/cake-app/pull/1/commits/b0c2196763fb4c38a9d0c96147d991f5dbc83370

404エラーがログファイルに出力されるようになっていて不要なのでスキップするように設定します。

PHPUnitのインストール

コミット
https://github.com/mosaxiv/cake-app/pull/1/commits/40b4a6f7454dad4d07717b55690b2faac16e5428

なぜかデフォルトでインストールされてないので入れておきます。

インストール

今回紹介したことは以下のコマンドでインストールできます。
.envを使うプロジェクトを構築するときはオススメです:kissing_heart:

composer create-project --prefer-dist mosaxiv/cake-app