意外と知らないことというか、おっかなびっくりでやっていたり、他のところに依存しないで複雑なインストールが必要なんじゃないかと怯んでいる人とかがいらっしゃるようなので、適当に書きます。
ダウンロードしたやつをphpで実行すればいいだけ。
Composerをシステム全体にインストールしないでcomposer.phar
をダウンロードして、プロジェクト直下で最初に使いたいライブラリをphp composer.phar require なんかのライブラリ名
ってするとcomposer.json
とcomposer.lock
とvendor
ディレクトリが出来上がります。
その後のライブラリの追加などは、出来上がったものをベースに新しく使いたいものを追加変更していけば良いだけです。
php composer.phar
をコマンド実行してライブラリを追加していくのでも良いと思います。
monologのインストールの例
phpのフレームワークLaravelでも利用されている、monologというログライブラリを、利用したい場合を例にします。
composer.pharをダウンロード
公式サイトからダウンロードできます。ここにあります。。現在の最新版は、1.0.0-alpha11 (2015-11-14)です。
ダウンロードします。
wget https://getcomposer.org/download/1.0.0-alpha11/composer.phar
ダウンロードされました。
composer.phar実行
composer.pharはphpで実行できるので、
php composer.phar 〜〜〜〜ってオプションつけながら実行すればライブラリがその実行したところの直下に出来上がります。
monologでは、
php composer.phar require monolog/monolog
とやれば、monolog本体とmonologが依存しているライブラリと、それらのライブラリを一括でloadするためのautoload.phpが出来上がります。
呼び出し方やパッケージ名などは、最近はみんな意識が高いので、READMEにかいてありますね。
monologがインストール出来たのでみてみる
ファイルは、カレントディレクトリにvendorというディレクトリが出来上がってその配下に置かれます。
├── htdocs //例です
│ ├── admin
│ ├── images
│ ├── いろんなパス
│ ├── …
│ └── いろんなパス
├── composer.json // これも出来上がる
├── composer.lock // これも出来上がる
├── lib //例です
├── tmp //例です
└── vendor // これが出来上がる
├── composer
├── monolog
└── psr
これでもうmonologが利用できます。
composer.jsonには、requireしたインストールしたものがバージョンされて書きだされています。
{
"require": {
"monolog/monolog": "^1.17"
}
}
composer.lockには、実際にmonolog自体がインストールされた時に依存しているライブラリの一覧やオートロードのための設定が書き出されていますが、こちらは開発している人は直接変更しません。書いてあることがわからなくても恐れるにたりません。必要になるまでは無視しましょう。笑
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "63946ac2ea8bb27a32cbe4d16644c833",
"content-hash": "86fa6d774713f6609169690844125b05",
"packages": [
{
"name": "monolog/monolog",
"version": "1.17.2",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
"reference": "bee7f0dc9c3e0b69a6039697533dca1e845c8c24"
},
"dist": {
.... snip
monologがインストール出来たので使ってみる
この状態で、monologをrequreして使うには、あとはマニュアル通りです。
例えば、アプリケーション用のログクラスを作りましょう。最初の行にautoload.php
を呼ぶようにして、こんなふうに作り始められます。
いろんなライブラリを使いたくなった時にはrequire_onceを1268万行書かないと動き始めない素のphpがこんなに簡単になりますね。psrとautoload.php最高。
<?php
require_once dirname(__FILE__) . '/../../vendor/autoload.php'; // こう書いとく。
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Processor\WebProcessor;
use Monolog\Formatter\LineFormatter;
/**
* Class AppLogger
*
*/
class AppLogger
{
/**
* @var Monolog\Logger
*/
protected $log;
public function __construct() {
$this->log = new Logger('myLogger');
}
}
実際のログのクラス実装の例は、こちらのブログの記事が新しくて参考になるのでリンクを貼っておきます。(Composerの導入のところはこの記事の内容で置き換えてくださいね。もう一回インストールしないでねw)
require_once
を書く場所は一回でいいのでこのクラスファイルに書かないで、最初の呼び出されるphpファイルに書いとくだけでも良いです。
これを本番環境に持って行くには
これを本番環境に持って行くには、本番環境にcomposer.phar
とcomposer.json
とcomposer.lock
を持って行って、
php composer.phar install
ってすればいいです。
インストールも嫌だったら、phpのバージョンさえ合えば動くので、
vendor
ディレクトリイカも全部本番環境に持って行ったらそのまま動きます。ソの際は、autoload.phpをrequireしているところを絶対パスで書かないように気をつけてください。