SOFTELメモ

Softel Inc.

【php】PEARをインストールする(Composerで)

問題

最初は pearコマンド、次は Pyrus と使ってきたけど、さらに次へ!

logo-composer-transparent

答え

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

関連するメモ

コメント