PHP を使った開発でよく使う Composer に関するお話しです。
例えば、composer.json
に以下のように記述して開発を行ったとします。
{
...
"autoload": {
"psr-4": {"App\\": "src/"}
},
...
}
その後、以下のコマンドを実行するわけですが、
$ composer dump-autoload
実はこの時、vendor/composer/autoload_psr4.php
にこの内容が書き込まれています。
この場合であれば、元々以下のような内容であった autoload_psr4.php
が、
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);
以下のように上書きされます。
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'App\\' => array($baseDir . '/src'),
);
プログラムのエントリポイントとなる PHPファイルでは、vendor/autoload.php
を require
で読み込んでオートロードしているはずですが、この中で vendor/composer/autoload_psr4.php
も読み込まれているため、composer.json
がなくても src/
以下のクラスファイルは正常に読み込まれます。
このプログラムを誰かに渡す場合も、必ずしも composer.json
を含めておく必要はないということになります。
関連