Laravelに関しては、Composerの自動ロード、つまり「psr-4」と「クラスマップ」オートロードの違いについて質問があります。PSR-4とクラスマップの自動読み込みの違いは?
PSR-4は、新しいファイルの変更または追加のたびにdumpautoload
を繰り返す必要はありません。classmapには、クラスを含む既存ファイルの変更または指定したディレクトリに新しいファイルを追加するたびにdumpautoload
が必要です。
Laravelに関しては、Composerの自動ロード、つまり「psr-4」と「クラスマップ」オートロードの違いについて質問があります。PSR-4とクラスマップの自動読み込みの違いは?
PSR-4は、新しいファイルの変更または追加のたびにdumpautoload
を繰り返す必要はありません。classmapには、クラスを含む既存ファイルの変更または指定したディレクトリに新しいファイルを追加するたびにdumpautoload
が必要です。
PSR-4標準には、名前空間に基づいた厳密なファイルシステム構造が必要です。 src
ディレクトリにApp
という名前空間のアプリケーションがあるとしたら、すべてのサブネームスペースはサブディレクトリをミラーリングし、クラス名は.php
拡張子のないファイル名と同じになります。
{
"autoload": {
"psr-4": { "App\\": "src/" }
}
}
src/
Foo/
Bar.php <---- App\Foo\Bar class
Baz.php <---- App\Baz class
オートローダーは、クラスのためにファイルを盗聴するダンプ・オートロードコマンドを必要としないので、どこ特定の完全修飾名のクラスを探すために、「知っている」と。
composer dump-autoload --optimize-autoloader
フラグまたは-o
でパフォーマンスの問題が解決され、クラスマップの自動ロードと同様の方法でクラスマップが生成されます。一方
、クラスマップの自動ロードは、ほぼすべての特定のファイルやディレクトリ構造を持っているあなたを必要としない、それが再帰的にそれらのクラスのために.php
と.inc
指定されたディレクトリ内のファイルとファイルやスニフを通過します。
{
"autoload": {
"classmap": ["src/", "lib/", "Something.php"]
}
}
これらのクラスは、次に、オートロードするために使用される(ベンダー/作曲ディレクトリ内のPHPファイルにキャッシュされた)リストに追加されます。
composer dump-autoload
コマンドを実行して、新しいクラスを追加する必要があります。
クラスなしのプレーンなPHPファイルはどうですか?例えばどのように追加するグローバル関数の束とちょうどPHPファイル、? – Toskan
@Toskan https://getcomposer.org/doc/04-schema.md#filesを参照してください。 – Finwe