LoginSignup
0
0

More than 1 year has passed since last update.

Composer基礎的な知識

Posted at

Composer

忘備録です。
ほぼ、公式からの拝借です。

composer.json

プロジェクトの依存関係が記述されており、他のメタデータも含まれている場合があります。通常、プロジェクト/ VCSリポジトリの最上位ディレクトリに配置する必要があります。(Packagistに上げなければ、最上位じゃなくても問題はない)

require
* 探して依存関係を解決してダウンロード、インストールする
* Composerはこの情報を使用して、 repositories キーを使用して登録したパッケージ「リポジトリ」、またはデフォルトのパッケージリポジトリである Packagist.org適切 なファイルのセットを検索します。上記の例では、composer.jsonファイルに他のリポジトリが登録されていないため 、monolog/monologパッケージがPackagist.orgに登録されていると想定しています。

{
    "require": {
         //パッケージ名: バージョン
        "monolog/monolog": "2.0.*"
    }
}

パッケージ名

基本的にベンダー名/パッケージ名である。
パッケージ名が被っても、ベンダー名で差別化できる

composer.lock

composer.lockには、インストールしたパッケージ情報が記載されてます。

composer update

Composer.jsonにパッケージを追加した際には、composer updateを実行させます。追加したパッケージがインストールされcomposer.lockも更新されます。
バージョン指定が〜以上と曖昧な指定の場合はupdateするとメジャーアップデートも含まれる可能性がある為、安易にupdateしてはいけない。

Composerは次の2つのことを実行します。
composer.jsonファイルにリストされているすべての依存関係を解決し、すべてのパッケージとその正確なバージョンをファイルに書き込みcomposer.lock、プロジェクトをそれらの特定のバージョンにロックします。composer.lockプロジェクトで作業しているすべての人が同じバージョンの依存関係にロックされるように、ファイルをプロジェクトリポジトリにコミットする必要があります
暗黙的に install コマンドを実行します。これにより、依存関係のファイルがvendorプロジェクトのディレクトリにダウンロードされます。(vendor ディレクトリは、プロジェクト内のすべてのサードパーティコードの従来の場所です)

composer install

composer installを実行するとcomposer.lockに基づいてパッケージをインストールします。初回はcomposer.lockがないので、composer.jsonに基づいてcomposer.lockが作成されたうえでパッケージがインストールされます。
composer.lock vendor(ダウンロードしたライブラリ群)が作成される。

vendorフォルダ

vendorフォルダにはインストールしたパッケージが格納されます。
vendorフォルダ配下にあるautoload.phpをプログラムで読み込むだけでライブラリを利用することができます。

オートロード

Composerは、オートロード機能(自動でクラスファイルを読み込む機能)を提供しています。オートロード機能には、psr-4 classmap filesといった方法があります。

PSR-4(名前空間)

psr-4では、「名前空間」と「composer.jsonの存在するディレクトリからの相対パス」の対応付けを行います。下記例では、Appから始まる名前空間のクラスへアクセスした際に、appディレクトリ配下から対応するクラスファイルを探してロードします。

"autoload": {
    "psr-4": {
        "App\\": "app/"
    }
},

autoloadセクションを編集した場合、下記コマンドを実行して変更を反映させる必要があります。

composer dump-autoload
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0