在命名空间中定义控制器仍然发生在 laravel 5.5 中的 Class App\Http\Controllers 错误

Posted

技术标签:

【中文标题】在命名空间中定义控制器仍然发生在 laravel 5.5 中的 Class App\\Http\\Controllers 错误【英文标题】:Defining controller in namespace still Class App\Http\Controllers error taking place in laravel 5.5在命名空间中定义控制器仍然发生在 laravel 5.5 中的 Class App\Http\Controllers 错误 【发布时间】:2018-05-21 14:19:00 【问题描述】:

我正在使用 laravel 5.5。我创建了一个名为 Abc 的控制器文件夹,并在其中创建了一个名为 abc.php 的控制器文件,在此文件中我编写了代码:

namespace App\Http\Controllers\Abc;

use App\Http\Controllers\Controller;

//use Illuminate\Support\Facades\DB;

class abcController extends Controller

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    
        $this->middleware('guest');
    

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function NewPromotion()
    
        return view('new-promotion');
    

在 web.php 文件下的 Route 文件夹中,我调用它的视图文件,例如:- Route::get('/new-promotion','Abc\abcController@NewPromotion');

尽管在命名空间中进行了定义,但我仍然遇到错误,即

"反射异常 (-1) 类 App\Http\Controllers\Abc\abcController 不存在”。

可能的问题是什么?

【问题讨论】:

请将您的所有代码格式化,在其前面添加 4 个空格。 【参考方案1】:

您应该确保您的文件位于app/Http/Controllers/Abc 目录中并且名称为abcController.php(区分大小写)。

按照惯例,类名也以大写字母开头,因此您应该将控制器命名为AbcController,并将此文件命名为AbcController.php(并更新您的路由文件以使用此控制器名称的有效大小写)。

【讨论】:

【参考方案2】:

创建控制器的好方法是使用 cmd (你必须在项目目录中)

php artisan make:controller "Abc\abcController"

【讨论】:

以上是关于在命名空间中定义控制器仍然发生在 laravel 5.5 中的 Class App\Http\Controllers 错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 的 auth 命名空间中没有定义命令

“‘command’命名空间中没有定义任何命令。”在 Laravel 中运行命令后:make

Laravel 5.7 使用某些命名空间的资源控制器路由名称是啥?

为 Laravel 8 路由定义命名空间 [重复]

需要更改 Laravel 控制器路径已在 serviceprovider 上设置命名空间为空

laravel入门教程