Composerがパッケージを取得するまでの流れを知る by きんじょうひでき

PHPerKaigi 2024
採択
パンフ記事(2ページ)

Composerがパッケージを取得するまでの流れを知る

o0h_ きんじょうひでき o0h_

みんな大好きComposer、いつも色んなパッケージを持ってきてくれますよね。
「言われたものを持ってきてくれる」ということは、
「そのパッケージがあるか」「今の環境等に対応しているか」「どのバージョンが良いか」「新しく取得する必要があるか」「どこにあるか」「どこに配置するか」を解決している事を意味します。

これらの情報は、

  • Packagistを始めとした「レポジトリ」の仕組み
  • Composerの実行環境(PHPのバーションや拡張モジュールの有無、vendor以下に存在するディレクトリ)の情報
  • 各パッケージに含まれるcomposer.jsonの提供情報

を再帰的に読み解いていくことで、整合性の取れた情報を組み立てています。

仕組みを知ることで、少し便利に感じたり、トラブルシュート力が上がるかも知れませんね!
ということで、composer install の実行時の動作を例にして、
「どこからどんな情報を取得しているか」「どういう順番で処理を進めているか」の概要を説明します。

具体的なロジックは実際にソースコードを読んでもらうことにして、
本記事では登場人物と役割(持っている情報の範囲)、シーケンスに触れていきます。