PHPでWEBアプリケーションを作る際に、ライブラリ(パッケージ)管理ツールとしてよく利用されるComposerについてまとめました。
Composerについて知らない人でも、概要を理解して実際に使ってみることができるように詳しく解説しています。
この記事でわかること
- Composerとは何か
- Composerのインストール方法
- Composerの使い方
ComposerとはPHPのパッケージ依存管理ツール
ComposerとはPHPでWEBアプリケーションを作る際に利用されるライブラリ(パッケージ)を管理できるツールで、各ライブラリの依存環境も考慮してくれるスグレモノです。
実際にアプリケーションを作る際に、全て自力でプログラムを組むことはあまりありませんよね。
外部で作成されたライブラリを利用することが多いはず。
例えば、とあるライブラリAを利用しようとしたとき、ライブラリA自身が他のライブラリBをベースにしていることもあります。
(これをライブラリAはライブラリBに「依存している」という言い方をします)
Aを使うために一つずつ必要なライブラリをインストールしていくのはかなり大変です。
ただし、Composerを使えばAのインストール時に依存関係にあるライブラリもまとめてインストールしてくれるので開発時のコスト軽減に繋がります。
Composerのインストール方法
OSによってインストール方法が変わります。
下記記事にまとめたので、ご自身の状況に応じてインストールしてください。
macOSの場合
windowsの場合
Composerの利用方法
具体的なComposerの使い方は以下の通りです。
composer.json
ファイルを作成- 使いたいライブラリを記述
- composer経由で必要なものをインストール
詳しくまとめていきます。
composer.jsonファイルを作成
まず、プロジェクトの最上位ディレクトリ(ルートディレクトリ)にcomposer.json
というファイルを用意します。
project
L composer.json
L index.php など
composer.json
はComposerの各種設定ファイルとして機能します。
使いたいライブラリを記述
composer.json
ファイル内に使いたいパッケージを記載します。
{
"require": {
"パッケージ": "バージョン"
}
}
たとえば、PHPで環境変数(.env
)を扱うためのphpdotenvというパッケージを使いたい場合は以下のようになります。
{
"require": {
"vlucas/phpdotenv": "^5.4.1"
}
}
パッケージの部分は「ベンダー名/パッケージ名」にします。
バージョンの記載方法は複数あります。
バージョン指定方法 | 意味 |
---|---|
5.4.1 | バージョンは5.4.1で固定 |
~5.4 | 5.4以上、6.0.0未満を採用 |
~5.4.1 | 5.4.1以上、5.5.0未満を採用 |
^5.4.1 | 5.4.1以上、6.0.0未満を採用 |
^0.3.2 | 0.3.2以上、0.4未満 |
phpdotenvの例では、後方互換性が維持されるのであれば新機能の追加をしてもよいと判断したので、下記のようにマイナーバージョンの追加を認める書き方をしました。
"vlucas/phpdotenv": "^5.4.1"
もちろん、下記のように複数のインストールを指示することも可能です。
{
"require": {
"vlucas/phpdotenv": "^5.4.1",
"monolog/monolog": "^1.23.0"
}
}
Composer経由で必要なものをインストール
composer.json
が用意できたら、Composerにてライブラリ(パッケージ)のインストールを行います。
ターミナルでcomposer.json
があるディレクトリに移動した上で、
$ composer install
composer.lock
ファイルとvendor
ディレクトリが作成されます。
project
L vendor
L composer.json
L composer.lock
L index.php など
composer.lock
には、composer.json
の指定に従った結果インストールしたものの一覧が表示されています。
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "1e113179d10405f0f924a0e2c221ea9e",
"packages": [
{
"name": "graham-campbell/result-type",
"version": "v1.0.4",
"source": {
"type": "git",
"url": "https://github.com/GrahamCampbell/Result-Type.git",
"reference": "0690bde05318336c7221785f2a932467f98b64ca"
},
...省略...
このファイルはcomposerが適宜書き換えていくので、自分で変更することはありません。
実際にインストールされたパッケージはvendor
ディレクトリ内に収められています。
なお、composer.json
にて許可された範囲のバージョンで最新版にしたいときは下記コマンドを実行してください。
$ composer update
composer.lock
のバージョン情報が書き換えられ、vendor
内に最新のものがインストールされます。
プロジェクトをgitで管理するときは、composer.json
とcomposer.lock
を記録させ、vendor
ディレクトリ以下は.gitignore
に登録しておくのが一般的です。
Composer経由でインストールしたパッケージの使い方
ここまででインストールが完了したので、実際にプロジェク内でどのようにパッケージを使うのかをまとめます。
vendor
ディレクトリを見てみると、autoload.php
というファイルがあるはずです。
project
L vendor
L composer
L vlucasなど各パッケージ
L autoload.php
L composer.json
L composer.lock
L index.php など
autoload.php
にはパッケージを使う際に必要なクラスファイルを自動で読み込むためのプログラムが記述されています。
まずプロジェクトの最初(index.php
など)でautoload.php
を読み込んでください。
<?php
require __DIR__ . '/vendor/autoload.php';
その上で、必要なタイミングでパッケージを利用すればOK。
例えば、phpdotenvというパッケージは以下のように利用できます。
<?php
require __DIR__ . '/vendor/autoload.php';
$dotenv = Dotenv\Dotenv::createImmutable(__DIR__);
$dotenv->load();
※phpdotenvの詳しい使い方は以下の記事でまとめています。
まとめ
ComposerとはPHPプロジェクトをスムーズに開発するために使われるパッケージ依存管理ツールです。
ルートディレクトリに配置したcomposer.json
に使いたいパッケージを宣言してインストールするだけで使えるようになります。
またこの記事ではご紹介できませんでしたが、自作したクラスの自動読み込み(オートローダー)としてもComposerを利用することができます。
Composerは便利でよく使われるツールなので、ぜひ自分でも試してみてください。
コメント