Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

素のPHPでも最低限.envとmonologくらいは使う際の手順

More than 3 years have passed since last update.

「ま、とりあえず」と書き始めたPHPスクリプトがそのまま本番投入されてしまうことは少なくありません。。。後から、「環境変数とかログ出力とかちゃんとしとけば良かった」と後悔することが多いので、最低限のセットアップ方法をメモ。

前提

どちらもcomposer使ってインストールするのでcomposerはインストールしておいて下さい。

インストール?

.env

composer require vlucas/phpdotenv

monolog

composer require monolog/monolog

利用

少しめんどくさいが、後の手間を考えると我慢できる範囲。

<?php

    //require
    require_once __DIR__.'/vendor/autoload.php';

    //for .env
    use Dotenv\Dotenv;

    $dotenv = new Dotenv(__DIR__);
    $dotenv->load(); //.envが無いとエラーになる

    //for monolog
    use Monolog\Logger;
    use Monolog\Handler\StreamHandler;

    //ログにつくprefixを与えてインスタンス作成
    $log = new Logger('MONOLOG_TEST');
    //ログレベルをDEBUG(最も低い)に設定
    $handler = new StreamHandler('./app.log',Logger::DEBUG);
    $log->pushHandler($handler);


    //利用 ///////////////////////////////////

    //.env
    //変数名が他の環境変数と被らないように注意
    $name = getenv('TEST_NAME');
    echo $name;

    //monolog
    $log->addDebug('でばっぐ');
    $log->addInfo('いんふぉ');
    $log->addWarning('わーにんぐ');
    $log->addError('えらー');
$dotenv = new Dotenv(__DIR__);

としているので、PHPファイルと同じディレクトリに.evnを作成し、

TEST_NAME=hoge

等としておく。

その他

.envを.gitignoreに書いておく

通常.envはリモートに上がると良くないのでgitを使う場合は.envを.gitignoreに書いておく。

オレオレClassもautoloadできるようにしておく

せっかくツール類をautoloadしているのに自作のクラスは別途requireなんてダサいことはしたくありません。
ここでは、カレントディレクトリにClassesというクラスを保持用のフォルダを作成し、Sampleというnamespaceをマップしてみます。

composer.jsonにautoloadの記述を追加する。

{
    "require": {
        "vlucas/phpdotenv": "^2.2",
        "monolog/monolog": "^1.19"
    },
    "autoload": {
        "psr-4": {
            "Sample\\" : "Classes/"
        }
    }
}

autoloadを追加したら、ターミナルでcomposerを更新する

$ composer dump-autoload

サンプルのクラスを作成し、namespaceを記述する

<?php

    namespace Sample;

    class sampleClass{

        public function Hello()
        {
            echo "Hello Sample\n";
        }

    }

メインファイルから利用する

<?php

    //require
    require_once __DIR__.'/vendor/autoload.php';

    //他のコード割愛

    //use
    use Sample\sampleClass;

    $sc = new sampleClass;
    $sc->Hello();
zaburo
こんにちは。自分用のメモをだらだら公開しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away