创建了以下文件:
文件: 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 中添加了这个并运行作曲家转储自动加载而没有错误。它有效!
"autoload": {
"classmap": [
"database",
"app/Services/Custom/Auth/AuthService.php"
],
"psr-4": {
"App''": "app/"
}
},
您的命名空间与您的目录结构不匹配。如果你的类在 App'Services'Custom'Auth'AuthService.php
中,那么你的命名空间需要App'Services'Custom'Auth
。如果你真的希望你的命名空间是App'Custom'Auth
,那么你的文件需要App'Custom'Auth'AuthService.php
。
修复此问题后,请确保在命令行上执行composer dump-autoload
。
看来你没有跑composer dump-autoload
或php composer.phar dump-autoload
.
composer.json 对于自动加载非常重要!
> Laravel需要一个大文件,其中包含所需的所有php文件,通常通过调用Artisan或Composer生成: PHP Artisan dump-autoload/composer dump-autoload
它只是重新生成需要包含在项目中的所有类的列表 (autoload_classmap.php)。非常适合项目中有新类的情况。
更多详细信息: http://developed.be/2014/08/29/composer-dump-autoload-laravel/