扩展Laravel 5响应门面

时间:2015-05-25 15:03:07

标签: php laravel fatal-error 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',
]

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

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

任何人都可以解释为什么没有找到课程吗?

1 个答案:

答案 0 :(得分:3)

转到项目根文件夹并在终端类型

composer dump-autoload

一切都应该没问题。当您创建新文件夹时,编辑器不知道它,因此它无法自动加载文件,即使它们是psr-4命名空间。

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

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