Composer入門

Composerとは

ComposerはPHPのパッケージ管理システムです。Composerを使えばアプリケーションで使用している
PHPで出来ているライブラリの依存関係やバージョンを管理することができます。
Composer用のリポジトリである packagist にあるライブラリはもちろん
PEARやGitリポジトリ上にあるアプリケーションや独自のライブラリなど、それ以外のライブラリも管理することができます。

使い方のおおまかな流れは、json形式でパッケージの関係を記述してコマンドを実行し、インストールします。
インストールすると、どのバージョンをインストールしたかが記述されたファイルが作成されます。
以後、再度インストールを実行しても、そのときに記述されたバージョンに従ってインストールされます。
バージョンを上げるコマンドもあり、新しいバージョンに上げることも簡単にできます。

Composerのインストール方法

Composerを使うにはPHP5.3.2以上を使っている必要があります。

Windowsの場合

Windowsの場合、Composer-Setup.exe を実行し、インストールすることができます。

Macなどの場合

ターミナルを開いて下記のコマンドを実行することでインストールすることができます。

curl -s https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

インストール後

インストール後、composerとコマンドを入力して、ロゴが出れば成功です。

composer.jsonへライブラリを登録する

アプリケーションで必要なライブラリや依存関係をcomposerではjson形式で記述しcomposer.jsonという名前で保存します。
composer.jsonの保存場所はアプリケーションのルートディレクトリです。

require キー

composer.jsonに記述するものとして最も一般的でよく使うのはrequireキーです。
requireキーでは必要なパッケージを記述します。
{
        "require": {
                "monolog/monolog": ">=1.0.0",
                "kertz/twitteroauth": "dev-master"
        }
}
packagist に存在するラ必要なイブラリはこのように記述します。
“monolog/monolog”や”abraham/twitteroauth”はライブラリの名前です。
“>=1.0.0”と”*”はバージョンの指定です。

バージョンの指定

ピッタリの番号を指定する以外にも、ワイルドカード、以上、以下、未満などと言った表記も可能です。

例:

表記 説明
1.0.2 厳密なバージョン指定
>=1.0,<2.0 バージョン1.0以上、2.0未満。カンマで区切ることで複数指定可能。
1.0.* この場合はバージョン1.0.0以上、1.1.0未満と同じ。

ライブラリをインストールする

composer.jsonを保存したら、composer.jsonと同一のディレクトリで
composer install
上記のようにコマンドを実行してください。
すると、vendorというディレクトリが作成されるはずです。
vendorディレクトリの下にjsonで指定したライブラリや、autoload.phpなどが作成されています。

また、composer.jsonと同じディレクトリに、composer.lockというファイルが作成されます。

composer.lock

composer.lockはcomposer installを実行した時に、どのバージョンのライブラリがインストールされたかを厳密に記録してあります。
以後、再度composer installを実行しても全く同じバージョンがインストールされます。
自動的にライブラリのバージョンがアップデートされることはありません。

バージョンをアップデートしたい場合は
composer update
を実行します。
このコマンドはcomposer.lockの内容を無視して、composer.jsonの内容にそって実行します。
その後、新しいcomposer.lockが作成され上書きされます。

ノート

プロジェクトをGitなどのバージョン管理システムで管理する場合、composer.jsonとcomposer.lockはバージョン管理の対象します。vendorディレクトリは管理外にしておきましょう。

インストールしたライブラリを利用する

composerにはライブラリを利用する方法としてautoload.phpが用意されています。
PHPアプリケーション本体からインストールしたライブラリを利用するには、
<?php
require_once 'vendor/autoload.php';
このようにautoload.phpをrequireするだけで、composerでインストールされたライブラリ全て使用可能になります。
クラスをインスタンス化するときに、クラスと同名のファイルがライブラリにあった場合、自動的に読み込みます。

もちろん、vendorの中のライブラリを直接reauireしても構いません。

ライブラリを作成する

composerで利用できるライブラリを作成する方法です。
ライブラリのルートディレクトリにもcomposer.jsonを設置する必要があります。
{
        "name": "uteam/hello-world"
}
ライブラリには必ず名前をつける必要があります。
また、ライブラリが使用しているライブラリも同じようにrequireを使って、composer.jsonに書くことができます。

上記で説明したautoload機能を利用できるようにライブラリ内のPHPファイルはPSRのコーディング規格に従っておくようにしましょう。

Gitリポジトリに設置したライブラリの利用

gitリポジトリに設置したライブラリを利用する場合は、利用先のcomposer.jsonでこのように表記します。

{
        "repositories": [
                {
                        "type": "vcs",
                        "url": "https://github.com/uteam/hello-world"
                }
        ],
        "require": {
                "uteam/hello-world":"dev-master"
        }
}
repositoriesで、gitリポジトリのURLを指定してあげます。
後は普段と同じようにrequireしてあげるだけです。
requireで指定する名前は、ライブラリのルートディレクトリに設置してあるcomposer.jsonのnameと一致している必要があります。
このドキュメントは Sphinx 1.2.1 で生成しました。