首页 > 解决方案 > 目标类 [Api\UserController] 不存在

问题描述

使用 php artisan route:list 后,我​​在 Laravel 8 中收到此错误:

Illuminate\Contracts\Container\BindingResolutionException 目标类 [Api\UserController] 不存在。

我在 App\Http\Controllers\Api 中有一个控制器:

<?php

namespace App\Http\Controllers\Api;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all();

        return responde()->json($users);
    }
}

路线/api.php:

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;

Route::get('users', 'Api\\UserController@index');

我是 Laravel 的新手

标签: phplaravel

解决方案


由于您正在导入use App\Http\Controllers\Api\UserController命名空间语句,因此您可以使用::class控制器类的表示法。它还将带来额外的好处,因为 IDE 将能够导航到与字符串不同的路径

从 Laravel 8 开始,我猜默认命名空间不再定义App\Http\Controllers在 RouteServiceProvider 中,而是由开发人员通过将 $namespace 属性设置为所需的值来定义默认命名空间。

<?php

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\UserController;

Route::get('users', [UserController::class, 'index']);

推荐阅读