Composerを使ってオートロードする
PHPでオートロードするにはComposerが必要なので、まだインストールされてなければ
・Windowsをお使いの方はこちら
・Macをお使いの方はこちら
を参考にしてインストールを行ってください。
まずはプロジェクトのルートディレクトリにcomposer.jsonファイルを作成します。
そして以下の内容を記述します
{
"autoload": {
"psr-4": {
"App\\": "./"
}
}
}
PSR-4のルールに従い、現在のディレクトリ(composer.jsonを作成した階層)をトップレベルの名前空間 App\
として、ルートディレクトリ配下のApp\から始まる名前空間のクラスやインターフェースをオートロードしてくれる設定です。
ターミナルでcomposer.jsonのあるディレクトリまで移動しcomposer dump-autoload
コマンドを実行します。
するとvendorディレクトリが作成され、autoload.phpが生成されます。
これでvendor/autoload.php
をインクルードするだけでオートロードしてくれます。
あとはuseでクラスに指定してある名前空間の完全修飾名を指定してあげれば、クラスを定義しているファイルをインクルードしなくても使えるようになります。
<?php
require_once `vendor/autoload.php`;
use App\Sample\MyClass;
// 名前空間 App\Sample\ 配下のMyClassクラスをオートロード
##クラス以外のファイルのオートロード
また、関数を定義してあるファイルなど、クラスやインターフェース以外のファイルもオートロードしたいといった場合には
{
"autoload": {
"psr-4": {
"App\\": "./"
},
"files": [
"sample/function.php"
]
}
}
"files[ ]"
にルートディレクトリから、オートロードしたいファイルまでのパスを記述することでオートロードすることができます。
上記のようにしてcomposer.jsonを更新した際にはターミナルでcomposer update
コマンドを実行して内容を更新してください。