Laravel:创建了一项服务,但找不到课程

时间:2016-01-19 20:48:35

标签: php class laravel namespaces

创建以下文件:

档案:App\Services\Custom\Auth\AuthService.php

名称空间:App\Services\Custom\Auth

班级名称:AuthCustom

内部方法:foo()

在我的控制器中,我试图从我创建的服务中调用foo方法。 App\Services\Custom\Auth\AuthService\AuthCustom::foo()

为什么会一直返回Class 'App\Services\Custom\Auth\Authservice\AuthCustom' not found

我做错了什么?

谢谢!

编辑: 我在composer.json中添加了这个并运行composer dump-autoload而没有错误。 它有效!

"autoload": {
    "classmap": [
        "database",
        "app/Services/Custom/Auth/AuthService.php"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},

3 个答案:

答案 0 :(得分:1)

您的命名空间与您的目录结构不匹配。如果您的班级位于App\Services\Custom\Auth\AuthService.php,那么您的名称空间必须为App\Services\Custom\Auth。如果您确实希望命名空间为App\Custom\Auth,则您的文件必须为App\Custom\Auth\AuthService.php

解决此问题后,请确保在命令行上执行composer dump-autoload

答案 1 :(得分:0)

您似乎没有运行composer dump-autoloadphp composer.phar dump-autoload

composer.json对于自动加载非常重要!

答案 2 :(得分:0)

Laravel需要一个包含所有php文件的大文件,通常通过调用artisan或composer生成:php artisan dump-autoload / composer dump-autoload

它只是重新生成需要包含在项目中的所有类的列表(autoload_classmap.php)。非常适合在项目中安装新课程。

更多详情:http://developed.be/2014/08/29/composer-dump-autoload-laravel/