目次
- composerとは?
- 依存について
- install・updateについて
composerとは?
PHPのパッケージ管理システムである
できること
- gitやsvn上のPHPライブラリ(パッケージ)を依存として定義&管理(インストールやバージョン確認)
- クラス・インターフェイスの自動ロード(オートローディング)
今回メインで説明するのは上の方。
依存について
composer使う理由として、パッケージの依存管理が容易になるというのはかなりあると思うのですが、別にcomposer使わなくてもパッケージ依存管理はできるわけで、、、
使用しない場合と使用する場合でどれだけ違うかというと以下。
composerを使用しない場合とする場合
使用しない場合
composerを使用しない場合、必要なパッケージ(PHPライブラリ)をインストールするために、各パッケージが管理されているリポジトリ(gitやsvn)にアクセスし、zipファイル等をローカルにダウンロードし、それらをローカルで展開し、vender/以下に配置する。
仮に、パッケージが他のパッケージに依存している場合、依存しているパッケージに対しても上と同じことを行う。
使用する場合
composerを使用する場合、必要なパッケージ(PHPライブラリ)をインストールするために、composer.jsonに文法通り(公式や日本語記事を参考)の書き方でパッケージ名とバージョンを記載するだけで、上記で行ったことを全てcomposer側がよしなにやってくれる。
仮に、パッケージが他のパッケージに依存していた場合でも、composerが自動で依存解決を行い、自動で必要なパッケージを取得し&vernder/以下に配置してくれる。
まとめ
上で見ても分かるように、composerなしでパッケージをインストールしたり、依存解決を行うのは、莫大な時間がかかり、普段の業務レベルで言うと、ほぼ不可能に近いので、基本的にパッケージ管理を行う際は、composerを使うことになる。
では、実際にcomposerを使ってパッケージを管理するためにはどうすればいいのか??
ここで登場するのがinstall・updateコマンド。
install・updateについて
- installは、パッケージを取得する。
- updateは、パッケージのバージョン更新する。
簡単に言えばこんな感じ。
さすがに簡単に言い過ぎたので、ちょっとだけ踏み込んでみると、、、
install
まず、composer.lockの存在チェックを行う。
存在する場合
composer.lockに記載されている、全パッケージを指定通りのバージョンで取得する。
存在しない場合
composer.jsonの「require」に記載されているバージョンのパッケージと依存している(そのパッケージが動くために必要な)パッケージがPackagistというcomposerで取得できるパッケージを管理している中央リポジトリに存在するか見に行き、存在すれば取得、存在しなければcomposer.jsonの「repositories」に登録されているリポジトリを見に行き、取得する。
パッケージ取得後、composer.lockを作成し、取得したパッケージと依存パッケージのバージョン情報を記載して保存する。
update
composer.jsonの「require」に記載のパッケージをPackagist若しくはcomposer.jsonの「repositories」記載のリポジトリに見に行き、最新のバージョンが存在すれば、そのパッケージと依存パッケージを最新のバージョンに更新する。
取得パッケージのバージョンに変更があった場合、変更に合わせてcomposer.lock記載のパッケージのバージョンも変更される。