Edited at

Composerのautoloadの書き方早見表

More than 1 year has passed since last update.

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


本家ドキュメント