【php】PEARをインストールする(Composerで)
問題
最初は pearコマンド、次は Pyrus と使ってきたけど、さらに次へ!

答え
依存関係の管理は Composerにお任せ(PHP 5.3.2以上が必要)。
依存関係の管理がお仕事なので、ComposerがPEARリポジトリや、各種パッケージのリポジトリを提供しているわけではない。
各パッケージの取得元はここで、こういう依存関係があるよということを composer.json に記述しておいて、取得や管理とautoloadができるというもの。
Composerは、PEARのリポジトリに対応している。git、Subversionなどにも対応している。今まで管理できていたものに加えて、Composer対応のパッケージが扱えるようになって、対応できる範囲が広がると考えてよい。
完全に使いこなせなくても、いろいろなものを取ってきてくれて便利!と、とりあえず考えておいてもよい。
それと、autoloadも組み込んでくれるので、使うときも便利!
Composerで取得と依存関係の管理ができるものは、こちらの対応パッケージ一覧参照。
PEARあり、symfonyあり、 zendframeworkあり、PHPUnitあり、jQueryあり...です。
PEARをComposer管理にする
プロジェクトがあり /tmp/myProject
アプリケーションのディレクトリがあり /tmp/myProject/application
ベンダーライブラリ用のディレクトリがある /tmp/myProject/application/vendor とする。
1. 準備
composer.phar を取得する。
$ cd /tmp/myProject/application $ curl -s http://getcomposer.org/installer | php
もしくは、composer.pharをダウンロードする。
いじくりだすと面倒なので、composerのデフォルトに従うと、vendorディレクトリと同じ階層にcomposer.pharを置いて使うとよい。vendorディレクトリの中にいろいろと取得してきたものが配置される。
2. composer.json を作る
PEARならこんな感じ。
$ cd /tmp/myProject/application
$ vi /tmp/myProject/composer.json
{
"repositories": [
{
"type": "pear",
"url": "http://pear.php.net/"
}
],
"require": {
"pear-pear.php.net/PEAR" : "*"
}
}
3. パッケージのインストール
php composer.phar install する。取って来てくれる。
$ cd /tmp/myProject/application
$ php composer.phar install
Loading composer repositories with package information
Initializing PEAR repository http://pear.php.net
Installing dependencies
- Installing pear-pear.php.net/xml_util (1.2.1)
Loading from cache
- Installing pear-pear.php.net/console_getopt (1.3.1)
Loading from cache
- Installing pear-pear.php.net/structures_graph (1.0.4)
Loading from cache
- Installing pear-pear.php.net/archive_tar (1.3.11)
Loading from cache
- Installing pear-pear.php.net/pear (1.9.4)
Loading from cache
Writing lock file
Generating autoload files
4. パッケージの追加
composer.json の require のところに、必要なものを追記して、php composer.phar update する。
例えば、PEARのMailが欲しいなあと思ったら、以下のようにする。
$ cd /tmp/myProject/application
$ vi /tmp/myProject/composer.json
{
"repositories": [
{
"type": "pear",
"url": "http://pear.php.net/"
}
],
"require": {
"pear-pear.php.net/PEAR" : "*",
"pear-pear.php.net/Mail" : "*"
}
}
$ php composer.phar update
Loading composer repositories with package information
Initializing PEAR repository http://pear.php.net
Updating dependencies (including require-dev)
- Installing pear-pear.php.net/mail (1.2.0)
Downloading: 100%
Writing lock file
Generating autoload files
5. 使う
composerが作ってくれる vendor/autoload.php を読み込んでおいたらよい。
vendorディレクトリの中がどうなっているかはあまり気にしなくてよい。
<?php require 'vendor/autoload.php'; $mail = new Mail(); //自動でPEAR.phpやMail.phpを読み込んでくれる //......以下略......
小規模なプロジェクトだと、そこまで管理してもらわなくてもいいかなあ。。。autoloadも自分でやろうかなあ。。。ということもあるかもしれません。
GitHubやPEARチャンネルや自前のリポジトリなどいろいろところからパッケージを寄せ集めて何かを作っているときは便利かもしれません。