7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Composerでライブラリを試す手順

Last updated at Posted at 2016-02-26

やることはタイトル通りです

#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
guzzle_test.php
<?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,
]);

その他のメモ

php
$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で自作のクラスを読み込みたい時

手順としては

  1. composer.jsonに自分で指定するnamespaceとディレクトリをpsr-4で設定する
  2. php ./composer.phar dump-autoloadでautoload.phpを更新する
  3. 指定するnamespaceのクラスを作成
  4. 作ったクラスを使いたいファイル内でuseして使う

例えばアプリケーションルートディレクトリ以下にsrcというディレクトリが存在していたとする
その中にはOriginal.php

/composer.json
/composer.lock
/guzzle_test.php
/src/
    /Original.php
/vendor

1. composer.jsonのautoload項目を追加

composer.json
{
    "autoload": {
        "psr-4": {
            "Mysrc\\": "src/",
        }
    }
}

psr-4の解説はここでなんとなくわかります

知っておきたいのは
PSR-4の場合

  • ネームスペースの区切りがディレクトリの区切りとなる。
  • 完全修飾クラス名の指定したネームスペースプレフィックス以降がベースディレクトリ内に存在する。
  • ファイル名は<クラス名>.phpとなる。

ということですね、ファイル名をクラス名と同じにしていなかったのでハマったことがあります…

2. autoloadの更新

以下のコマンドを入力するだけ

php ./composer.phar dump-autoload

3. 指定するnamespaceのクラスを作成

Original.phpの実装

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();

みたいな感じで使えます。

流れはこんな感じです
以上。

参考

PHPの名前空間とcomposerのautoload (PSR-4) サンプル

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?