Composerとは
PHPのプロジェクトで必要となったライブラリやパッケージなどを管理する「ライブラリ依存管理ツール」です。
【具体例】例えば、Schoolという名前のライブラリがあったとします。
Schoolライブラリを使うにはstudentとteacherという名前のライブラリをインストールしなければ使えません。さらに、teacherライブラリはMathTeacher,EnglishTeacher,JapaneseTeacherというライブラリをインストールしなければなりません。
つまり本来使いたいライブラリであるSchoolをインストールするために、他にもたくさんのライブラリをインストールしなければならず、それを把握しイチからインストールしていくのは非常に大変です。
そこでComposerというツールを使うことで、Schoolライブラリをインストールすると自動的にstudent,teacherなどの必要なライブラリも一緒にインストールできるようになります。
Composerの特徴
vendor(ベンダー)ディレクトリでライブラリ群を参照
Composerでインストールしたライブラリはすべてvendorという名前のディレクトリ(フォルダ)の中に格納されます。
composer.lockファイルの生成
composer installした際に、どのバージョンのライブラリをインストールしたか等がcomposer.lockファイルとして自動生成されます。
チーム開発でcomposer.lockを基準にすることで、メンバー間で同じバージョンのライブラリを使うことができるようになります。
autoload(オートロード)の設定
オートロードとは「自動で読み取る」という意味になります。
PHPのautoloadではファイル内に別のファイルを読み込ませることができるようになります。
別ファイルを複数読み込ませたい場合、autloadファイルだけを読み込めば自動で複数のファイルを読み込んでくれるので大変便利です。
//autoloadの呼び出し
require_once 'autoload.php';
autoloadの記述方法
autoloadの機能はcomposer.jsonに記述することで使用することができます。
composer.jsonにautoloadを記述して、 composer installとすることでautoload.phpが自動生成されます。
"autoload": {
"psr-4": {
"App\\" : "app/"
}
App\\は名前空間、app/は実際のディレクトリ名を表し、
App\\というキーをapp/に持たせています。
psr-4というのは、PHPのコーディング規約としてPSR(PHP Standards Recommendations)が設定されておりその中の1つです。psr-4はオートローダーの記述についてのきまりです。
PSR一覧
PSR-1 Basic Coding Standard(基本的なコーディング標準)
PSR-2 Coding Style Guide(コーディングスタイルガイド)
PSR-3 Logger Interface(ロガーインタフェース)
PSR-4 Autoloader(オートローダー)
PSR-6 Caching Interface(キャッシングインターフェイス)
PSR-7 HTTP Message Interface(HTTPメッセージインターフェイス)
PSR-11 Container Interface(コンテナインタフェース)
PSR-13 Hypermedia Links(ハイパーメディアリンク)
PSR-15 HTTP Handlers(HTTPハンドラ)
PSR-16 Simple Cache(シンプル・キャッシュ)
PSR-17 HTTP Factories(HTTPファクトリー)
composer.jsonの作成
手動でファイルを作るか、プロジェクトのディレクトリでcomposer initというコマンドを実行することでcomposer.jsonを作成することができます。
もしファイルの中身を変更した場合はcompsoer updateをする必要があります。
composer.jsonとcomposer.lockの違い
composer.jsonとcomposer.lockもどちらもライブラリやパッケージを管理するファイルですが、少し役割が異なります。
【インストールする場合】
最初にComposerをインスストールする場合、composer.jsonに書かれた情報をもとにパッケージやライブラリをインストールします。
このときにcomposer.lockが同時に生成され、インストール時に参照したパッケージ情報やバージョンが書き込まれます。
そして2回目以降composer installした場合は、composer.lockに書かれたバージョンのパッケージやライブラリがインストールされます。
【アップデートする場合】
パッケージやライブラリなどの追加などはcompsoer.jsonに記述します。記述しただけでは反映されないのでcomposer updateを使って更新する必要があります。
アップデートをするとcomposer.jsonの情報に基づいてパッケージやライブラリが最新の状態になります。
そしてこのバージョン等の変更はcomposer.lockにも書き込まれて更新されます。
ただしcomposer updateを実行すると、すべてのパッケージのバージョンが上がってしまいます。
バージョン更新や追加の際はcomposer update パッケージ名やcomposer require パッケージ名として更新したいパッケージのみ指定してを更新することが多いです。
Composerでライブラリをインストールする手順
- compsoer.jsonにインストールしたいライブラリを記述する
-
composer installコマンドを実行する - vendorディレクトリとcomposer.lockファイルにインストールしたライブラリが保存されている
"require": {
"nesbot/carbon": "^2.50"
}
参考
PHP開発でComposerを使わないなんてありえない!基礎編
PHPのライブラリ管理ツール「Composer」入門
composer.json、composer.lockって何なの?という人向けのまとめ
composer.jsonとcomposer.lockの役割について分かりやすくまとめてみた