作为Laravel的新手,我在Laracasts上关注 Repositories Simplified 并创建了一个BackendServiceProvider
类。
现在,当我想做的时候
php artisan generate:controller TestController
我收到错误:
PHP Fatal error: Class '_testic\repos\BackendServiceProvider' not found in
/vagrant/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php
on line 158
出了什么问题?我该如何解决?
到目前为止我做了什么:
config/app.php
然后将其添加到composer.json
内的psr-0
:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"require": {
"laravel/framework": "4.1.*"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"psr-0": {
"_testic": "app/" // <----- my entry
},
"scripts": { ...
运行composer dump-autoload -o
答案 0 :(得分:2)
psr-0进入自动加载。就在classmap旁边。
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
],
"psr-0": {
"_testic": "app/" // <----- my entry
}
}
答案 1 :(得分:1)
通常这些问题来自名称空间,文件名或目录结构中的错误。
您将PSR-0命名空间定义为:
"_testic": "app/" --> which means 'my _testic namespace is stored in the folder app/'
并且,根据错误消息,您将文件命名为
_testic\repos\BackendServiceProvider
所以我必须假设您将在其他文件中使用该特定文件:
use _testic\repos\BackendServiceProvider;
这也意味着您必须在文件夹
中包含BackendServiceProvider.php
文件
/whateverRootFoldersYouMayHave/app/_testic/repos/BackendServiceProvider.php
如果这不是您的文件夹结构,您将收到此错误。
请注意,在PSR-0中,整个文件夹结构必须与您定义为根命名空间的文件夹结构相同。