php - 扩展 Laravel 5 响应外观

标签 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',
]

这会抛出未找到类的正常 namespace 错误:

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

任何人都可以解释为什么找不到该类吗?

最佳答案

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

composer dump-autoload

那么一切都会好起来的。当您创建新文件夹时,composer 不知道它,因此它无法从其中自动加载文件,即使它们是 psr-4 命名空间的。

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

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

关于php - 扩展 Laravel 5 响应外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30441182/

相关文章:

php - Xdebug 断点在 Laravel 中不起作用

php - cURL超时,你能优雅的处理吗?

fatal-error - 调用未定义的函数iconv() fatal error -Suitecrm

php mysqli/multi_query 不能进行多次

php - 在php中格式化日期并存储在mysql中

PHP array_push() 正在覆盖现有的数组元素

php - 传递给函数的参数必须是可调用的,数组给定

php - MiddleWare 上的 Laravel 返回 View

laravel - 布伦特里支付转账