PHP界隈で静かに盛り上がっているらしいパッケージ依存管理ツールComposer。正直、今まで本格的に使ったことはなく普通にPEARで直接インストールしてたりしたんですが(そもそもPEAR自体そんなに使ってなかった)、アプリケーション…というかフレームワークによって必要なバージョンが違うケースが多いため、試しに導入をしてみましたメモ。
あ、Composerを使うためにはPHP5.3.2以上が必要です。まぁ、今どきそれより古い環境がメインってこともない…と思いたい。
Composerのインストール
ローカルMacにComposerをインストールします。
% curl -sS https://getcomposer.org/installer | php
#!/usr/bin/env php
Some settings on your machine make Composer unable to work properly.
Make sure that you fix the issues listed below and run this script again:
The detect_unicode setting must be disabled.
Add the following to the end of your `php.ini`:
detect_unicode = Off
A php.ini file does not exist. You will have to create one.
If you can not modify the ini file, you can also run `php -d option=value` to modify ini values on the fly. You can use -d multiple times.
公式サイトに書いてあったコマンドを実行すると、detect_unicodeの設定がねぇよって怒られるので、かといってMac標準だとphp.ini自体も置いてないので(/private/etc/php.ini.defaultにある)、アドバイス通り -d オプションで直接指定してあげます。
% curl -sS https://getcomposer.org/installer | php -d detect_unicode=Off
#!/usr/bin/env php
All settings correct for using Composer
Downloading...
Composer successfully installed to: /Users/zaru/composer.phar
Use it: php composer.phar
無事インストール完了。 php composer.phar と実行すると色々とオプションを表示してくれます。このままでも良いんですが、毎回 php composer.phar と打つのは(しかもパスを意識しつつ)面倒なので、aliasもしくは、バイナリファイルをパスの通った場所にコピーします。
% mv composer.phar /usr/local/bin/composer
これで、 composer というコマンドだけでOK。
Composerの使い方
Composerは、簡単にいえば指定ディレクトリの中だけでパッケージ管理してくれるツールです。なので、まずはアプリケーションのルートディレクトリにでも移動します。
% cd ~/Sites/sample-app/
composer.jsonでパッケージ管理
composer.jsonというパッケージ管理の設定ファイルをアプリケーションのルートディレクトリに設置します。
{
"require": {
"monolog/monolog": "1.2.*"
}
}
% composer install
これだけで、後は自動的にmonologのバージョン 1.2.* 以降をダウンロードしてくれます。完了後、/verndor/ というディレクトリが生成され、その中にある autoload.php をアプリケーションファイル上で読みこめば自動的に monolog のライブラリ読み込みがされます。
例えば、追加で PHP_Codesniffer が必要になったとした場合は、composer.json に追記をして update をかけます。(installではない)
{
"require": {
"monolog/monolog": "1.2.*",
"squizlabs/php_codesniffer": "dev-phpcs-fixer"
}
}
% composer update
非常に簡単。
ライブラリの探し方
Packagistというサイトでライブラリを検索できます。
Packagistに登録されていないライブラリ(例えばPEARなど)は、composer.jsonにリポジトリを登録すれば使うことが出来ます。
{
"repositories":[{
"type":"pear",
"url":"http://pear.php.net"
}],
"require": {
"monolog/monolog": "1.2.*",
"squizlabs/php_codesniffer": "dev-phpcs-fixer",
"pear-pear/HTTP_Request2":"2.1.*"
}
}
以上です。