Laravel Error Class “App\libs\XXXXX” not found
現象
Laravel で名前空間の指定が正しくWindowsでは正常に動作し、Linuxで Class Not Found が出て原因不明の現象におちいった
autoload_classmap.php
オートロードするファイルの配列が作られているファイルを一旦調査する。キーがnamespaceで値がパスになっている。
vendor/composer/autoload_classmap.php
配列が存在しないなら以下のコマンドを実行する
% composer dump-autoload
dump-autoload
クラス名の変更や新規追加など、名前空間を新たに作成した時は以下のコマンドを実行し、autoload_classmap.phpを更新する。
% composer dump-autoload
composer.json
オートロードはcomposer.jsonに記述されています
独自にapp\Logic\Sample
など各機能毎にフォルダ分けしてクラスを分けたい場合、app\tests\TestCase.php追加する場合、 composer.json ファイル内にある classmap の配列の箇所に作成したフォルダのパスを追記し、composer dump-autoloadで取り込む。
"autoload": {
"psr-4": {
"App\\": "app/"
},
"classmap": [
"database/seeds",
"database/factories",
"Logic/Sample",
"tests/TestCase.php"
]
},
基本クラスのエイリアス
config/app.php に記述されているAliasは、短く記述できるので config/app.php 参照してみる
例:use App;
'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
'Arr' => Illuminate\Support\Arr::class,
'Artisan' => Illuminate\Support\Facades\Artisan::class,
'Auth' => Illuminate\Support\Facades\Auth::class,
'Blade' => Illuminate\Support\Facades\Blade::class,
'Broadcast' => Illuminate\Support\Facades\Broadcast::class,
'Bus' => Illuminate\Support\Facades\Bus::class,
composer.json
参考
Laravelで名前空間を指定してオートロードされなかったら見る場所