勉強したことのメモ

webプログラマが勉強したことのメモ。

composerでmonologとTwigをインストール

   

「composerで○○をインストール」というのをよく見かけるがcomposerすら何なのか分かっていなかった。今後使うかどうかは置いておいて、composerのインストールとその後にmonolog→Twigをインストールするメモ。

 

composerのインストール

ドキュメントルート(/var/www/htmlで想定)とかで以下コマンドで導入可能。

wget https://getcomposer.org/download/1.0.0-alpha11/composer.phar

 

monologのインストール

同ディレクトリで以下コマンドでインストールする。

php composer.phar require monolog/monolog

/var/www/html/vendor/monologディレクトリにインストールされる。

以下のような形で使用する。

<?php
ini_set( 'display_errors', 1 );

require('./vendor/autoload.php');

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Formatter\LineFormatter;

$logging_path = 'log/error.log';
$log = new Logger('test');

$output = "[%datetime%] %level_name% %message% %file% %line%\n";

$formatter = new LineFormatter($output);
$stream = new StreamHandler($logging_path, Logger::DEBUG);
$stream->setFormatter($formatter);
$log->pushHandler($stream);

$log->pushProcessor(function ($record) {
	$record['file'] = $record['context']['file'];
	$record['line'] = $record['context']['line'];
	return $record;
});

function debug($message, $depth=''){
	global $log;
	$backtrace = debug_backtrace();
	$key = isset($backtrace[$depth]) ? $depth : 0;
	$file = $backtrace[$key]['file'];
	$line = $backtrace[$key]['line'];
	$context = array('file' => $file, 'line' => $line);
	$log->addInfo($message, $context);
}

debug('debug message!!');

尚、ファイルのパーミッションやユーザーは適宜変更する(rootでインストールしたらvendor/autoload.phpが読み込めなかった)。

 

Twigのインストール

同ディレクトリで以下コマンドでインストールする。

php composer.phar require twig/twig:1.*

*のワイルドカードは1.*系で最新のものをインストールしてくれるらしい。/var/www/html/vendor/twigディレクトリにインストールされる。以下のような形で使用する。
<?php
require_once './vendor/autoload.php';

$loader = new Twig_Loader_String();
$twig = new Twig_Environment($loader);

echo $twig->render('Hello {{ name }}!', array('name' => 'hoge'));

こちらもmonologと同様、ファイルのパーミッションとユーザーに注意する。

 

composerとは

PHPのパッケージ管理システムらしい。yumとかだと依存関係によりインストールできないことがあるが、そういった問題が解決できるらしい。まだ試したばかりで実感できないが本当に解決できるのであれば非常にありがたい。

 

参考サイト

https://qiita.com/tomk79/items/5ab61b4b24fb80fe8a90

http://kzhishu.hatenablog.jp/entry/2015/10/04/200000

 - PHP ,

  関連記事

PHPでBlowfishを用いた暗号と復号化

PHPでBlowfishを用いてCBCモードで暗号化と復号化を行いたかった。Pe ...

Warning: Division by zero in

PHPでグラフ作ってる時に出たエラー 「Warning: Division by ...

PHPでExcelシートを出力する方法(PhpSpreadsheet)

PHPでエクセルシートを出力させたい。以前はPHPExcelを利用していたが現在 ...

MySQLでIPを整数値としてカラムに格納する

MySQLでIPを整数値としてカラムに格納しているケースがあった。今までIPが必 ...

メールサーバーを構築せずにGmailのSMPTを使ってPHPでメール送信

メールサーバーが立てられなかったり、無料サーバーのため使えなかったりといった場合 ...

SendGridを使ってメールサーバを構築せずにPHPからメールを送信する方法

メールサーバを構築せずに独自ドメインのメールアドレスにてメール送信を行いたい。過 ...

PHPで一括出力ではなく、ひとつずつ順次に出力する方法

PHPで重たい処理とかをしている際に、途中報告みたいな形で順次出力させる方法のメ ...

PHPで画像のサイズや拡張子等、詳細情報を取得

PHPで画像のサイズや拡張子等、詳細情報を取得する際 いつもググってしまっていた ...

jQuery.uploadでリアルタイムプレビュー

やりたい事は、 ・<input type="file">で画像を選択 ...

PHPでフォームとかの数値チェック

フォームとかで届いた値が整数値で0以上かどうか 調べる際に、なるほど、と思ったソ ...