TL;DR
該当のControllerをuseし、::classでそのクラスの完全修飾名を取得。それをControllerとして指定する。
use App\Http\Controllers\HogeController;
Route::get('/hoge', [HogeController::class, 'hogeAction']);
起こるエラー
Illuminate\Contracts\Container\BindingResolutionExceptionTarget class [コントローラーの名前] does not exist.
問題のコードと前提
HogeController.phpはapp/Http/Controllersに間違いなく配置されている。Route::getで指定しているクラス名もtypoしていない。
Route::get('/hoge', 'HogeController@hogeAction');
対処
Laravel8系において、Controllerはクラスの完全修飾名で指定する。
use App\Http\Controllers\HogeController;
// HogeController::class の実行結果は
// 'App\Http\Controllers\HogeController'
Route::get('/hoge', [HogeController::class, 'hogeAction']);
以下でも同じ動作をしますが、Controllerのクラス名::classを使用する上記の方法の方が可読性が良さそうです。(公式ドキュメントのサンプルコードもControllerのクラス名::classの形)
Route::get('/hoge', 'App\Http\Controllers\HogeController@hogeAction');
参考
Laravel 8.x 公式ドキュメント Routing#The Default Route Files
https://laravel.com/docs/8.x/routing#the-default-route-files
