LoginSignup
85
68

More than 5 years have passed since last update.

Composerのautoloadの書き方早見表

Last updated at Posted at 2018-01-03

composer.jsonでautoloadをどう書くか忘れっぽい人のための早見表

psr-4 (Vendor\Namespace)

composer.json
{
    "autoload": {
        "psr-4": {
            "Alice\\MyModule\\": "src/"
        }
    }
}

ロードされうるファイルとクラス

composer.json
src/
  A.php   ... Alice\MyModule\A クラス
  B/
    C.php ... Alice\MyModule\B\C クラス

psr-4 (Vendor)

{
    "autoload": {
        "psr-4": {
            "Alice\\": "src/"
        }
    }
}

ロードされうるファイルとクラス

composer.json
src/
  A.php   ... Alice\A クラス
  B/
    C.php ... Alice\B\C クラス

psr-0 (Vendor\Namespace)

composer.json
{
    "autoload": {
        "psr-0": {
            "Alice\\MyModule\\": "src/"
        }
    }
}

ロードされうるファイルとクラス

composer.json
src/
  Alice/
    MyModule/
      A.php   ... Alice\MyModule\A クラス
      B/
        C.php ... Alice\MyModule\B\C クラス

classmap

指定されたディレクトリ配下やファイル内のクラスを解析し、クラス名とファイル名の対照表を作ってくれる。ファイル自体は遅延読み込み。

composer.json
{
    "autoload": {
        "classmap": ["src/", "Something.php"]
    }
}

ロードされうるファイルとクラス

composer.json
Something.php ... このファイルに書かれている全クラス
src/ ... このファイルに書かれている全クラス

files

classmapが遅延読み込みなのに対し、filesはプログラム実行前に指定したファイルを読み込む。

composer.json
{
    "autoload": {
        "files": ["src/MyLibrary/functions.php"]
    }
}

ロードされうるファイルとクラス

composer.json
src/
  MyLibrary/
    functions.php ... このファイルに書かれているコードすべて

autoload設定後はdumpautoload

composer.jsonを書き換えただけでは反映されないので、下記コマンドを実行する。

composer dumpautoload

本家ドキュメント

85
68
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
85
68