我在尝试扩展Laravel 5中的Response门面时遇到了命名空间问题。我在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
任何人都可以解释为什么没有找到课程?
转到项目根文件夹并在终端类型中
composer dump-autoload
一切都应该没问题。当您创建一个新文件夹时,编辑器不知道它,因此它无法自动加载文件,即使它们是psr-4
命名空间。
编辑此外,您需要在别名数组下的config/app.php
中为您的外观声明别名,而不是提供者:
'AjaxResponse' => 'App\Extensions\Facades\AjaxResponse',