在尝试扩展Laravel 5中的Response Facade时,我遇到了一个命名空间问题。我在app
目录下创建了一个名为Extensions\Facades
的新文件夹树。在这个文件夹中,我有一个名为AjaxResponse.php
的文件,其中包含以下内容:
<?php namespace App\Extensions\Facades;
use Illuminate\Support\Facades\Response;
class AjaxResponse extends Response{
public static function send($code,$body,$http_code=200){
parent::json( array(
'status'=>(string)$code,
'body' =>$body
) )->setStatusCode($http_code)->send();
exit();
}
}
我在config/app.php
注册此服务提供商,就像我理解的那样:
providers=[
//..normal stuff
'App\Extensions\Facades\AjaxResponse',
]
这就是抛出未找到的类的正常命名空间错误:
FatalErrorException in ProviderRepository.php line 150:
Class 'App\Extensions\Facades\AjaxResponse' not found
任何人都可以解释为什么没有找到课程吗?
答案 0 :(得分:3)
转到项目根文件夹并在终端类型
中composer dump-autoload
一切都应该没问题。当您创建新文件夹时,编辑器不知道它,因此它无法自动加载文件,即使它们是psr-4
命名空间。
编辑您还需要在别名数组下的config/app.php
中为您的外观声明别名,而不是提供者1:
'AjaxResponse' => 'App\Extensions\Facades\AjaxResponse',