🗒️
Slim4 に dotenv と migration の機能を追加していい感じにする
環境
- Slim4 (Skelton じゃない方だが、どっちでも行けそう?)
- PHP7.4 (or later)
- MySQL5.7 (MariaDB)
- dotenv ライブラリ:
vlucas/phpdotenv@5.4.1
- マイグレーションライブラリ:
robmorgan/phinx@0.12.9
dotenv ライブラリの準備
PHP 向けの dotenv ライブラリは2種類くらいメジャーなのがあるが、今回は vlucas/phpdotenv
を採用した。
インストール
composer require vlucas/phpdotenv
設定ファイル作成
touch .env
自分の環境に合わせて、設定内容を書く。
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=username
DB_PASSWORD=password
DB_CHARSET=utf8
マイグレーションライブラリの準備
マイグレーションのライブラリも有名なものはいくつかあると思うが、今回は phinx
を採用した。
インストール
composer require robmorgan/phinx
設定ファイル作成
まず以下のコマンドで設定ファイル phinx.php
を生成する。
vendor/bin/phinx init .
次に、中身を書き換える。
初期状態では配列をリターンしているだけになっているので、先頭で dotenv を読み込ませる。
<?php
$dot_env = __DIR__. '/.env';
if (is_readable($dot_env)) {
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
}
続けて、配列の中身を書き換える。
return
[
'paths' => [
...
],
'environments' => [
'default_migration_table' => 'phinxlog',
'default_environment' => 'production',
'production' => [
'adapter' => 'mysql',
'host' => $_ENV['DB_HOST'] ?? 'localhost',
'name' => $_ENV['DB_DATABASE'] ?? 'production_db',
'user' => $_ENV['DB_USERNAME'] ?? 'root',
'pass' => $_ENV['DB_PASSWORD'] ?? '',
'port' => $_ENV['DB_PORT'] ?? '3306',
'charset' => $_ENV['DB_CHARSET'] ?? 'utf8',
],
'development' => [
'adapter' => 'mysql',
'host' => $_ENV['DB_HOST'] ?? 'localhost',
'name' => $_ENV['DB_DATABASE'] ?? 'development_db',
'user' => $_ENV['DB_USERNAME'] ?? 'root',
'pass' => $_ENV['DB_PASSWORD'] ?? '',
'port' => $_ENV['DB_PORT'] ?? '3306',
'charset' => $_ENV['DB_CHARSET'] ?? 'utf8',
],
'testing' => [
...
]
],
...
];
DB の設定は dotenv で設定するので、production/development と分けなくても良いケースもあるので、不要であれば development の配列を丸ごと削除しても良いかも。
また、今回は dotenv を利用したが、サーバで環境変数を設定できるのであれば、先頭部分を削除し $_ENV
のところを $_SERVER
に変えるだけで済むと思う。
それでは良き Slim ライフを。
Discussion