0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Slim4 に dotenv と migration の機能を追加していい感じにする

Posted at

環境

  • 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

自分の環境に合わせて、設定内容を書く。

/.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 を読み込ませる。

phinx.php
<?php

$dot_env = __DIR__. '/.env';
if (is_readable($dot_env)) {
    $dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
    $dotenv->load();
}

続けて、配列の中身を書き換える。

phinx.php
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 ライフを。

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?