为啥我的 Laravel 模块中出现“找不到类”错误?

Posted

技术标签:

【中文标题】为啥我的 Laravel 模块中出现“找不到类”错误?【英文标题】:Why am I getting a "class not found" error in my Laravel module?为什么我的 Laravel 模块中出现“找不到类”错误? 【发布时间】:2014-11-05 09:33:45 【问题描述】:

我正在使用“laravel/framework”:“4.2.*”版本,我想在我的项目中使用模块系统。我已按照this document 中提供的说明进行操作。

我可以使用以下命令创建模块:php artisan modules:create module_name。我在我的app目录下创建了一个admin模块,模块的目录结构已经创建好了。

我在管理模块的控制器操作之一中使用DB::select('some SQL statement'),但它给了我以下错误:

找不到类“App\Modules\Admin\Controllers\DB”。

为什么找不到这个类?

【问题讨论】:

use Illuminate\Support\Facades\DB; 【参考方案1】:

当在根命名空间之外使用DB 或任何其他 Laravel 外观时,您需要确保您实际使用根命名空间中的类。您可以在课前添加\

\DB::select(...)

或者,您可以在类文件中使用 use 关键字来允许使用不同的命名空间类,而无需在每次使用时显式写出命名空间。

<?php namespace App\Modules\Admin\Controllers;

use DB;
use BaseController;

class ModuleController extends BaseController 

    public function index()
    
        // This will now use the correct facade
        $data = DB::select(...);
    

请注意,use 关键字始终假定它正在从根命名空间加载命名空间。因此,use 始终需要完全限定的命名空间。

【讨论】:

【参考方案2】:

使用 Illuminate\Support\Facades\DB;

【讨论】:

【参考方案3】:

否则你可以在 composer.json 中使用自动加载

"autoload": 
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php"
    ]
,

【讨论】:

您可以使用 phpstorm IDE 编辑器,它会帮助您处理。真的很有帮助。请尝试使用它。

以上是关于为啥我的 Laravel 模块中出现“找不到类”错误?的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中找不到类“App\Http\Controllers\Excel”

laravel克隆提供程序不起作用(找不到类)

laravel 5:找不到类“输入”

找不到类“Laravel\Socialite\SocialiteServiceProvider”

在基本 Laravel 5.4 教程中找不到类“任务”

为啥 webpack 在运行 npm run dev 时会报错