Composerって?
- Composerは 「PHP用のライブラリ(部品)管理ツール」
- 必要な部品(ライブラリ)と、それが動くために必要な細かい部品(依存関係)をすべて自動で集めてきてくれる
Composer の仕組み
| ファイル名 | 役割 |
|---|---|
| composer.json | 注文書。「このライブラリのこのバージョンが欲しい」というリスト。人間が編集する。 |
| composer.lock | 確定リスト。実際にインストールされた正確なバージョンが記録される。チーム全員が同じ環境を作るために必須。 |
| vendor/ (フォルダ) | 倉庫。 ダウンロードされた実際のライブラリ本体。PHPファイル群 |
Composer の便利な機能 オートロード (Autoload)
他のファイルを使うには require や include をそれぞれ書く必要がある。
でも、Composer を使えば以下の1行を書くだけで、vendor/ 内のすべてのライブラリが自由に使える。
require 'vendor/autoload.php';
私的にびっくり
Composerのオートローダーと自作のオートローダーは共存できる
Composerには「自作クラスも一緒に管理する機能」がある
自分で spl_autoload_register を書かなくて済む
例えば、以下のような自作のオートローダを作っていた場合
// クラスが必要になった時に実行する「待ち伏せ」関数を登録する
spl_autoload_register(function($class) {
// $class には、使おうとしたクラス名(例: "Myclass")が自動で入る
// その名前を使って「ファイルへの道筋」を作る
$classFilePath = __DIR__ . '/' . $class . '.php';
// もし、実際にその場所にファイルが存在したら...
if (file_exists($classFilePath)) {
// そのファイルを読み込む!
require $classFilePath;
}
});
Composerに自作クラスの管理を任せる方法は、「PSR-4」と呼ばれる世界標準のルールを使うそうです。
これを行うと、自作の spl_autoload_register のコードを削除して、require_once 'vendor/autoload.php';
の一行だけで全てが完結するようになる。
方法!
{
"autoload": {
"psr-4": {
"": "src/"
}
}
}
意味: 「クラスを探すときは、src フォルダの中を自動的に見てね」という命令
$ composer dump-autoload <ー実行 以下が出れば成功
Generating autoload files
Generated autoload files
注意
ルール1: ファイル名とクラス名を一致させる(例:class User なら User.php)
ルール2: 新しいファイルを追加した後は、念のためもう一度 composer dump-autoload を打つ
新しいクラス(例:User.php や Database.php)を該当フォルダ(例:src フォルダ)に追加する