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