Данная ошибка актуальна для тех кто изучает Laravel по старым курсам, либо крайне невнимательно обновил фреймворк. Начиная с 8-ой версии был изменён синтаксис роутов по умолчанию.
Target class [PostController] does not exist
Раньше использовался «string syntax»:
1Route::get('posts', 'PostController@index');
С 8-ой версии используется «callable syntax»:
1use App\Http\Controllers\PostController;2 3Route::get('posts', [PostController::class, 'index']);
Важно: Не забудь указать use
Оба варианта рабочие, но в новых версиях был удалён корневой namespace App\Http\Controllers, а значит теперь необходимо указывать полный namespace. Более подробно можно почитать в Upgrade Guide
Это опциональное изменение для улучшенной поддержки IDE, можно продолжать использовать старый вариант указав полный namespace к классу или указав корневой $namespace в App\Providers\RouteServiceProvider, как было в предыдущих версиях, но в этом нет никаких преимуществ и лучше перейти к новому варианту.