使い方の流れ
Composerの使い方は主に以下のような手順になります。
- プロジェクトのフォルダを作成
- 使いたいパッケージの定義ファイル(composer.json)を作成
- composer installのコマンド実行
- PHPのコーディング(autoloaderファイルの読み込み)
まず、Composerはフォルダ配下にあるcomposer.jsonファイルを通じてパッケージを管理しますので、そのためのフォルダの作成と、composer.jsonファイルを作成します。すでに使いたいパッケージがComposerに対応している場合には、そのパッケージのインストール方法としてcomposer.jsonの記述例があります。
その説明に従って記述するだけです。また、Composerに対応しているライブラリはpackgistで検索することができます。
{ "require": { "guzzlehttp/guzzle": "4.0.*@dev" } }
今回はcomposer.jsonの細かい中身は気にせず流れを確認します。次回以降でcomposer.jsonの記述ルールを説明します。
composer install Loading composer repositories with package information Installing dependencies (including require-dev) - Installing guzzlehttp/streams (1.1.0) Downloading: 100% - Installing guzzlehttp/guzzle (dev-master b2edcf2) Cloning b2edcf2dc1b37623f648f181d729ecac0ce0c930 Writing lock file Generating autoload files
また、Windows環境でインストール時に「Install Shell Menus」にチェックした場合には、コンテキストメニューからコマンドを実行できます。
実行が終了すると、composer.lockファイルと、vendorフォルダが作成され、そこに必要なライブラリのソースが展開されます。composer.lockファイルにはダウンロードされたパッケージ情報などが格納されて管理されています。従って、vendorフォルダでダウンロードされたファイルを含めてバージョン管理などする場合には、このcomposer.lockファイルも併せて管理する必要があります。
また、展開されたファイルのオートローディングを提供するためのファイルとして、vendor/autoload.phpが作成されます。
実際にインストールしたパッケージを使うにはコード5の(1)のようにautoload.phpをrequire_onceするのみで非常に簡単です。
<?php require_once("vendor/autoload.php"); //(1) $client = new GuzzleHttp\Client(); $res = $client->get('http://rss.rssad.jp/rss/codezine/new/20/index.xml'); echo $res->getStatusCode(); echo $res->getHeader('content-type'); echo $res->getBody();
パッケージの追加と削除
続いて、先ほど記述したcomposer.jsonから新たに必要になったパッケージがある場合の方法です。まず、同様に追加したいパッケージを同様にcomposer.jsonに追記します。今回はpear/archive_tarというパッケージを追加してみます。
{ "require": { "guzzlehttp/guzzle": "4.0.*@dev", "pear/archive_tar" : "1.3.*" } }
記述が終了しましたら、updateコマンドを以下のように実行します。これで、新たなパッケージが追加されます。
$ composer update Loading composer repositories with package information Updating dependencies (including require-dev) - Installing pear/archive_tar (1.3.11) Loading from cache Writing lock file
実際にどのようなパッケージが導入されたのか確認してみます。確認する方法はshowコマンドです。また、インストールされたパッケージ一覧を参照するためには引数に"-i"を指定します。
$ composer show -i guzzlehttp/guzzle dev-master b2edcf2 Guzzle is a PHP HTTP client library and framework for building RESTful web service clients guzzlehttp/streams 1.1.0 Provides a simple abstraction over streams of data (Guzzle 4+) pear/archive_tar 1.3.11 Tar file management class
続いて、必要なくなったパッケージがある場合には同様に、composer.jsonから削除します。先ほど追加したpear/archive_tarが必要なくなった場合には、追記前の状態にcomposer.jsonを戻し、再度、updateコマンドを実行します。
$ composer update Loading composer repositories with package information Updating dependencies (including require-dev) - Removing pear/archive_tar (1.3.11) Writing lock file Generating autoload files
このようにcomposer.jsonを更新していくことでプロジェクトのパッケージ管理が行えます。