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