エラーの内容
Laravelで、”routes\web.php”を使って、コントローラーを参照しようとしたら、以下のようなエラーが発生しました。
Illuminate\Contracts\Container\BindingResolutionException
Target class [○○Controller] does not exist.
エラーの原因
原因はweb.phpのルーティングの書き方がダメだったとのこと。
Route::get('top', 'MainController@index');
Laravelのバージョンが8系だと、この書き方はだめだとのこと。
解決方法
完全修飾名で設定
以下のように、完全修飾名で設定することで解決できます。
Route::get('top', 'App\Http\Controllers\MainController@index');
アクション構文
もしくは、以下のようにアクション構文で指定することで解決できます。
use App\Http\Controllers\MainController;
Route::get('top', [MainController::class, 'index']);