扩展 Laravel 5 响应外观

Extend Laravel 5 Response Facade

我在 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',
]

这是抛出 class 未找到的正常命名空间错误:

FatalErrorException in ProviderRepository.php line 150: 
Class 'App\Extensions\Facades\AjaxResponse' not found

谁能解释为什么找不到 class?

转到项目根文件夹并在终端中键入

composer dump-autoload

那么一切都应该没问题。当您创建一个新文件夹时,作曲家并不知道它,因此它无法从中自动加载文件,即使它们是 psr-4 命名空间。

EDIT 此外,您还需要在别名数组下的 config/app.php 中为您的外观声明别名,而不是提供者:

 'AjaxResponse'   => 'App\Extensions\Facades\AjaxResponse',