为啥我的 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”