81
88

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 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();
81
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
81
88

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?