LoginSignup
82
88

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-05-23

「ま、とりあえず」と書き始めた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();
82
88
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
82
88