Composerのインストールが完了していれば、composerコマンドを利用して自由にライブラリやパッケージをインストールすることができます。 今回はcomposerを使用して簡単なライブラリをインストールし、実際にそのライブラリを使ってみるところまでやってみましょう。

Composerの基本的な使い方

1年以内に更新されました。
更新日 : 2019年12月20日

Composerのインストールが完了していれば、Composerコマンドを利用して自由にライブラリやパッケージをインストールすることができます。

今回はComposerを使用して簡単なライブラリをインストールし、実際にそのライブラリを使ってみるところまでやってみましょう。

テスト用のプロジェクトでComposerを試す

今回はテスト用にプロジェクトを作成していくため、MAMPで設定してあるドキュメントルートで作業を実施していきます。

プロジェクトディレクトリの作成

まずはプロジェクトを管理するディレクトリの作成をしていきましょう。

  1. ターミナルアプリ(Windowsの場合コマンドプロンプト)を開く
  2. MAMPのドキュメントルートまで移動
    ターミナル起動直後はホームディレクトリ(ログイン時の初期位置)にいるため、そこからドキュメントルートまでcdコマンドを利用して移動します。
    例えば、デスクトップ直下のhtdocsフォルダがドキュメントルートであれば、cd Desktop/htdocsと打ったあとにEnterを押すことでそこまでディレクトリを移動できます。
  3. プロジェクトディレクトリを作成
    移動後、mkdir composer-testを実行すると、composer-testという名前でフォルダができます。

Composerを利用してライブラリのインストール

  1. プロジェクトディレクトリに移動し、monologライブラリをインストール
    cd composer-testコマンドで作成したディレクトリに移動し、次にmonologというライブラリをComposerでインストールするために以下のコマンドを実行します。
    composer require monolog/monolog
    $composer require monolog/monolog
    Using version ^1.24 for monolog/monolog
    ./composer.json has been created
    Loading composer repositories with package information
    Updating dependencies (including require-dev)
    Package operations: 2 installs, 0 updates, 0 removals
      - Installing psr/log (1.1.0): Downloading (100%)
      - Installing monolog/monolog (1.24.0): Downloading (100%)
    monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
    monolog/monolog suggests installing sentry/sentry (Allow sending log messages to a Sentry server)
    monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
    monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
    monolog/monolog suggests installing php-amqplib/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
    monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
    monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
    monolog/monolog suggests installing mongodb/mongodb (Allow sending log messages to a MongoDB server via PHP Driver)
    monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
    monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
    monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)

    このようになればインストール完了です。

  2. 実際にディレクトリの中を確認
    実際にエクスプローラなどで作成したプロジェクトの中身を見てみましょう。

以下のようにファイルやディレクトリが作成されていれば、Composerでmonologライブラリのインストールは完了しています。

インストールしたライブラリを使用してみる

今回はmonologというライブラリをインストールしました。このライブラリは、ログ出力を行ってくれるロガーという機能をもったライブラリです。

このロガーを実際に自分で書いたコードで実行してみましょう。

PHPファイルを作成し、monologを試す

composer-testディレクトリに、Sample.phpを作成してみましょう。

<?php
require("vendor/autoload.php");

use \Monolog\Logger;
use \Monolog\Handler\StreamHandler;

// ロガー作成
$logger = new Logger("sample");
$logger->pushHandler(new StreamHandler("logs/sample.log", Logger::INFO));

try {

	// 通常ログ出力
	$logger->notice("ノーティスログ");

	// INFOログ出力
	$logger->info("インフォログ");

	// DEBUGログ出力
	$logger->debug("デバッグログ");

	// WARNログ出力
	$logger->warn("ワーニングログ");

	// 例外発生
	throw new RuntimeException("ランタイム例外が発生しました。");

} catch (RuntimeException $e) {
	// ERRORログ出力
	$logger->error($e->getMessage());
	$logger->error($e->getMessage(), array("test"));
}

echo "ログ出力テストを行いました!";

作成したらこれを実行すると、composer-testディレクトリ内に自動でlogs/sample.logファイルが作成され、Sample.phpで出力処理を行ったログが吐き出されています。

上から順番に解説していきます。

  1. require("vender/autoload.php")
    これはオートロードと呼ばれる機能を持ったPHPファイルをインポートしています。Composerでは、オートロード機能が備わっており、このautoload.phpをインポートするだけで、Composerでインストールしたライブラリを自動的にすべてインポートしてくれます。
    自分で作成したコードもこのオートロードに組み込むような設定も可能です。
  2. use \Monolog\Loggeruse \Monolog\Handler\StreamHandler
    これは名前空間の機能の1つで、Composerでインポートされたライブラリのどの機能を使用するかを宣言する部分です。
    今回はMonologのLoggerというクラスとStreamHandlerというクラスを利用する宣言を行っています。
  3. $logger = new Logger("sample")
    ここでは宣言された$logger変数に、monologライブラリで作られたLoggerクラスのインスタンスを作成しています。
    Composerでインストールされたライブラリの機能はこのように簡単に利用することができます。
  4. $logger->notice("ノーティスログ")
    格納されたインスタンスのメソッドを利用している部分です。monologライブラリを利用することで、ログの区分けを簡単に行うことができ、ログの出力先も$logger->pushHandler(new StreamHandler("logs/sample.log", Logger::INFO)) で設定した通りの場所に書き込んでくれます。

まとめ

今回はComposerを利用してライブラリのインストール及びライブラリの利用まで行いました。

オートロードの機能を利用したライブラリの利用方法やライブラリのインストールに関してはこの基本とほぼ変わらないので、あとはライブラリやパッケージごとの利用方法をライブラリの公式サイトなどを見ながら使えるようになっていきましょう。