【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チャンネルや自前のリポジトリなどいろいろところからパッケージを寄せ集めて何かを作っているときは便利かもしれません。
コメント