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を見るとありそうですね。
これでできるのでしょうか……(未検証)。