Я получаю проблему с пространством имен при попытке расширить фасад Response в Laraval 5. Я создал новое дерево папок в каталоге 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
.
EDIT Также вам нужно объявить псевдоним для вашего фасада в config/app.php
в массиве aliases, а не в качестве провайдеров:
'AjaxResponse' => 'App\Extensions\Facades\AjaxResponse',