やることはタイトル通りです
#composerをインストール
以下のコマンドをかましましょう
curl -sS https://getcomposer.org/installer | php
#composer.jsonに入れたいライブラリを記述
{
"require": {
"guzzlehttp/guzzle": "~6.0@dev"
}
}
#ライブラリインストール
php composer.phar install
installは初回はjsonを見て実行し、composer.lockが存在する場合はそちらを見てinstallする
ので、開発途中にライブラリの更新を行いたいときは
php ./composer.phar update
でライブラリのインストールを行いつつ、composer.lockの更新を行い、本番環境ではcomposer.lockを読み込んでinstallする
※composer.jsonに自動で追記して欲しい時は
php ./composer.phar require fabpot/goutte
のようにするとcomposer.jsonの更新もライブラリのインストールもcomposer.lockの更新もやってくれる
#試すPHPファイル作成
ついでにディレクトリとファイルはこんな感じになる
>ls
composer.json composer.lock guzzle_test.php vendor
<?php
// autoloadを読み込む
require 'vendor/autoload.php';
// Guzzle使うため
use GuzzleHttp\Client;
// 使うコード書く
$client = new Client([
// Base URI is used with relative requests
'base_uri' => 'http://httpbin.org',
// You can set any number of default request options.
'timeout' => 2.0,
]);
その他のメモ
$client = new \GuzzleHttp\Client([
// Base URI is used with relative requests
'base_uri' => 'http://httpbin.org',
// You can set any number of default request options.
'timeout' => 2.0,
]);
$res = $client->request('GET');
echo $res->getStatusCode();
// 200
echo $res->getHeaderLine('content-type');
// 'application/json; charset=utf8'
echo $res->getBody();
namespaceで自作のクラスを読み込みたい時
手順としては
-
composer.json
に自分で指定するnamespaceとディレクトリをpsr-4で設定する -
php ./composer.phar dump-autoload
でautoload.phpを更新する - 指定するnamespaceのクラスを作成
- 作ったクラスを使いたいファイル内でuseして使う
例えばアプリケーションルートディレクトリ以下にsrc
というディレクトリが存在していたとする
その中にはOriginal.php
/composer.json
/composer.lock
/guzzle_test.php
/src/
/Original.php
/vendor
1. composer.jsonのautoload項目を追加
{
"autoload": {
"psr-4": {
"Mysrc\\": "src/",
}
}
}
psr-4の解説はここでなんとなくわかります
知っておきたいのは
PSR-4の場合
- ネームスペースの区切りがディレクトリの区切りとなる。
- 完全修飾クラス名の指定したネームスペースプレフィックス以降がベースディレクトリ内に存在する。
- ファイル名は<クラス名>.phpとなる。
ということですね、ファイル名をクラス名と同じにしていなかったのでハマったことがあります…
2. autoloadの更新
以下のコマンドを入力するだけ
php ./composer.phar dump-autoload
3. 指定するnamespaceのクラスを作成
Original.phpの実装
<?php
// 使いたいnamespaceを宣言 composer.jsonで宣言したMysrc
namespace Mysrc;
class Original
{
public function eeecho()
{
echo "オリジナルです。\n";
}
}
4. 作ったクラスを使いたいファイル内でuseして使う
<?php
// autoloadを読み込む
require 'vendor/autoload.php';
// Originalを使うようにする
use Mysrc\Original;
$orig = new Original();
$orig->eeecho();
みたいな感じで使えます。
流れはこんな感じです
以上。