コピペで出来るComposer導入

PHP
PHP Composer

概要

Composerとは

  • PHPのライブラリ依存管理のデファクトスタンダードなパッケージ管理ツールです。Rubyのgem,PerlのCPANにあたるツールです。
  • PHPのライブラリ管理ツールとして、PEARPEAR2などがありますが、昨今のライブラリの管理はComposerに統一されつつあります。
  • また、PHPで自作したライブラリを他の開発者に利用してもらうためにも、Composerで導入出来るようにしておくと利用されやすくなります。
  • 対応環境は PHP 5.3.2+です

導入

Composerは、既存のプロジェクトなどにも簡単に導入できます。

アプリを構築するディレクトリを作ります

今回はスクラッチからアプリを作成することを想定します。

% mkdir app
% cd app

Composerをインストールします

% curl -sS https://getcomposer.org/installer | php

composer.pharというファイルが作成されます。
composer.pharはPHPプログラムのアーカイブです。

ライブラリをインストールします

guzzleという、HTTPクライアントをインストールしてみます。
composer.jsonに利用するライブラリの設定を書き込みます。

% echo '{
    "require": {
        "guzzle/guzzle": "~3.7"
    }
}' > composer.json

requireキーに、ライブラリ名とそのバージョン指定を記載します。ライブラリ名はpackagistで検索できます。

composerのupdateサブコマンドで、必要ファイルをダウンロードします。この際、依存するパッケージがある場合は自動的に依存するファイルもダウンロードされます。

% php composer.phar update

初めてupdateコマンドを実行すると、composer.lockとvendorディレクトリが作成されます。
composer.lockには、現在利用しているライブラリの名前とバージョンが記載されます。vendorディレクトリには、ライブラリ自体のファイルなどが保存されます。

% ls
composer.json  composer.lock  composer.phar  vendor/

ライブラリを利用する

Yahoo! Japanへ接続して、コードを表示するスクリプトを書いてみます。

% vi test.php

ファイルの中身

<?php
// クラスローダーを読み込む
require 'vendor/autoload.php';


// ヤフーへ接続するHTTPクライアントのインスタンスを作成
$client = new \Guzzle\Http\Client('http://www.yahoo.co.jp/');

// GETリクエストを送る準備
$request = $client->get('/');

// HTTPリクエストを送信
$response = $request->send();

// レスポンスを表示
print_r($response);

実行してみます

とりあえず、HTTPレスポンスが出力されます。

% php test.php | head
HTTP/1.1 200 OK
Date: Mon, 02 Dec 2013 15:22:10 GMT
P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Expires: -1
Pragma: no-cache
Cache-Control: private, no-cache, no-store, must-revalidate
X-XRDS-Location: http://open.login.yahoo.co.jp/openid20/www.yahoo.co.jp/xrds
Vary: Accept-Encoding
Connection: close
Transfer-Encoding: chunked

まとめ

  • Composerをインストールし、guzzleライブラリをインストールしました
  • guzzleを使ってPHPスクリプトを作成しました。

コメント