【PHP】composerの使い方
composerはPHPのライブラリ管理ツールです。以前から存在は知っていたけど、ちゃんと使ったことがありませんでした。
最近、素のPHPを書く機会があり、ライブラリを使わないとかなりキツイことがあったので、調べたことをメモしておきます。
環境¶
- vagrant
- VirtualBox
- CentOS7
- PHP 5.6
composerのインストール¶
### セットアップ用PHPスクリプトをダウンロード
$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
### セットアップ実行
$ php composer-setup.php
### スクリプトを削除
$ php -r "unlink('composer-setup.php');"
### どこでも使えるように/usr/local/binに移動
$ sudo mv composer.phar /usr/local/bin/composer
### 動作確認
$ composer -v
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
ライブラリのインストール¶
試しに、Guzzle
をインストールします。
Guzzleとは、PHPのHTTPクライアントで、HTTPリクエストを簡単に実現することができるライブラリです。
その1¶
require
コマンドでインストールする。
$ composer require guzzlehttp/guzzle
Using version ^6.4 for guzzlehttp/guzzle
./composer.json has been created
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 5 installs, 0 updates, 0 removals
- Installing ralouphie/getallheaders (3.0.3): Loading from cache
- Installing psr/http-message (1.0.1): Loading from cache
- Installing guzzlehttp/psr7 (1.6.1): Loading from cache
- Installing guzzlehttp/promises (v1.3.1): Loading from cache
- Installing guzzlehttp/guzzle (6.4.1): Loading from cache
guzzlehttp/psr7 suggests installing zendframework/zend-httphandlerrunner (Emit PSR-7 responses)
guzzlehttp/guzzle suggests installing psr/log (Required for using the Log middleware)
Writing lock file
Generating autoload files
その2¶
composer init
を利用してインストールする。
### initで対話形式で、composer.jsonを作成します
### この辺の細かいことは分からないので割愛
$ composer init
Welcome to the Composer config generator
This command will guide you through creating your composer.json config.
Package name (<vendor>/<name>) [masashi/hoge]:
Description []:
Author [masashi <masashi6269>, n to skip]: n
Minimum Stability []:
Package Type (e.g. library, project, metapackage, composer-plugin) []:
License []:
Define your dependencies.
Would you like to define your dependencies (require) interactively [yes]? yes
Search for a package: guzzlehttp/guzzle
Enter the version constraint to require (or leave blank to use the latest version):
Using version ^6.4 for guzzlehttp/guzzle
Search for a package:
Would you like to define your dev dependencies (require-dev) interactively [yes]?
Search for a package:
{
"name": "masashi/hoge",
"require": {
"guzzlehttp/guzzle": "^6.4"
}
}
Do you confirm generation [yes]?
Search for a package:
のとこでguzzlehttp/guzzle
を入力すると、composer.json
のrequire
に追加してくれます。
これで準備完了。最後にcomposer install
を実行してインストールします。
$ composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 5 installs, 0 updates, 0 removals
- Installing ralouphie/getallheaders (3.0.3): Loading from cache
- Installing psr/http-message (1.0.1): Loading from cache
- Installing guzzlehttp/psr7 (1.6.1): Loading from cache
- Installing guzzlehttp/promises (v1.3.1): Loading from cache
- Installing guzzlehttp/guzzle (6.4.1): Loading from cache
guzzlehttp/psr7 suggests installing zendframework/zend-httphandlerrunner (Emit PSR-7 responses)
guzzlehttp/guzzle suggests installing psr/log (Required for using the Log middleware)
Writing lock file
Generating autoload files
ライブラリの利用¶
オートローダーを読み込んだあとに、普通に使うだけ。
<?php // autoloadを読み込むと、ライブラリを個別にrequire,includeしなくても使えます
require dirname(__FILE__). '/vendor/autoload.php';
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.github.com/repos/guzzle/guzzle');
echo $response->getStatusCode() . PHP_EOL; # 200
echo $response->getHeaderLine('content-type') . PHP_EOL; # 'application/json; charset=utf8'
echo print_r(json_decode($response->getBody()), true); # '{"id": 1420053, "name": "guzzle", ...}'
これだけでだいぶ楽になりました!