Help us understand the problem. What is going on with this article?

Composerの使い方

Composerとは

PHPのライブラリ管理ツールです。
ライブラリAを使用するためには、別のライブラリBを先にインストールする必要がある、なんてことがあります。
この時、ライブラリAはライブラリBに依存している、と言います。
Composerを使用することで依存関係にあるライブラリをまとめてインストールすることができます。

Composerのインストール

Composerの公式サイトにアクセスして、Downloadをクリックしましょう。
各環境に合わせたインストール方法が表示されます。

Composer公式サイト
https://getcomposer.org/

Macならbrewで簡単にインストールできます。
% brew install composer

インストールが完了したら-Vコマンドで正常にインストールされたことを確認しましょう。

% composer -V
Composer version 1.7.2 2018-08-16 16:57:12

Composerのセットアップ

Composerを使用するにはcomposer.jsonファイルを作成する必要があります。
composer.jsonは、プロジェクトにインストールしたいライブラリ情報を記述するファイルです。

composer.jsonはプロジェクトごとに作成します。

まずは、プロジェクトディレクトリを作成しましょう。

% mkdir composer_project
% cd composer_project

次にcomposer.jsonファイルを作成し、以下のように記述します。

composer_project/composer.json
{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

"require"の後に、パッケージ名:バージョン番号で、インストールしたいライブラリを指定します。
今回はロガーライブラリであるMonologをインストールしてみましょう。
別のライブラリについてはPackagist(Composerリポジトリ)を参照します。

Packagist
https://packagist.org/

ライブラリのインストール

ではmonologをインストールしましょう。
インストールするにはcomposer installコマンドを使用します。

% composer install
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing monolog/monolog (1.0.2): Downloading (100%)
Writing lock file
Generating autoload files

インストールが完了したら何が変わったのか見てみましょう。
以下の要素が追加されていると思います。

  • vendorディレクトリ
  • composer.lock

vendorディレクトリにはインストールしたライブラリが保存されます。
vendor/monolog/monologディレクトリにライブラリが保存されているのを確認できると思います。

バージョン管理ソフトで管理する場合、vendorディレクトリは外すと良いでしょう。

composer.lockファイルは実際にインストールされたライブラリを記録しています。
composer.jsonはライブラリのバージョンをワイルドカードで指定することもできるため、composer.lockの内容と必ずしも一致しません。
ほかのプロジェクトメンバーに共有する場合は、composer.jsonとcomposer.lockのどちらも共有する必要があります。

オートローディング

インストールされたライブラリはオートローディング機能を用いて、自動的に読み込ませることができます。

require 'vendor/autoload.php';

これでcomposer.jsonに記述されている全てのライブラリが読み込まれました。

Monologを使用してみる

では、読み込まれたMonologを使用してみましょう。

composer_project/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 {
  // INFOログ出力
  $logger->info('情報ログ');

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

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

sample.logファイルを見てみましょう。

logs/sample.log
[2018-10-26 08:30:51] sample.INFO: 情報ログ [] []
[2018-10-26 08:30:51] sample.ERROR: ランタイム例外が発生しました。 [] []

これでログ出力できるようになりました。

参考

https://getcomposer.org/doc/

sano1202
エンジニア向けの研修をしています。 技術を理解した上で使えること、仕事に昇華できることを大切にしています。 ・新入社員向け PHP/Java 研修: https://www.kronos.jp/open-learning/ ・AIセミナー: https://www.kronos.jp/aiseminar/
https://www.kronos.jp/
kronos-jp
AI開発・WEB開発・システム開発・Android開発・iOS開発・IT研修・トレーニング・新入社員研修などを行う企業です。
https://www.kronos.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした