Slimの練習の途中でやってみました。
composerで
requireしたライブラリは
vendorに入り、
vendor/autoload.phpを読み込むことでそれらを一気に使えるのは分かっていましたが、自作のコンポーネントに関しても
autoloadできると今更知ったのでメモ。
例えば、
src/Controllerディレクトリに
getData.phpを作成し、以下のように記述します。
<?php
namespace Slim\App\Controller;
class getData
{
//以下プロパティやメソッド
}
他にも
src/Modelや
src/Helperディレクトリに適宜名前空間を付けてクラスのPHPファイルを作成しておきます。
この状態で
composer.jsonに以下のように記述します。
"autoload": {
"psr-4": {
"Slim\\App\\Controller\\": "src/Controller",
"Slim\\App\\Model\\": "src/Model",
"Slim\\App\\Helper\\": "src/Helper"
}
},
psr-4は
autoloadの仕様ですね。これに則って、名前空間をディレクトリを記述すれば良い、と。パスの基準は
composer.jsonのあるディレクトリ。
> composer dump-autoload
上述のコマンドを実行することで、対応付けのためのクラスマップが生成されます。
増減がある度に実行するのが面倒……というのは、検索してみるとやはりそういう声はあるようですね。
Roboを使って自動化とか……
Composer Tasks – Roboを見るとありそうですね。
これでできるのでしょうか……(未検証)。
参考