Laravel 5.5. Фасад приложения не работает в обработчике исключений

У меня есть такая упрощенная версия класса

class Handler extends ExceptionHandler
{
protected $dontReport = [];

public function report(Exception $exception)
{
$environment = \App::environment();
//...
}

//...
}

И я получаю PHP Fatal error: Uncaught Error: Class 'App' not found in .../app/Exceptions/Handler.php:37,

В других местах приложения это работает.

В config/app.php это было зарегистрировано.

'aliases' => [
'App' => Illuminate\Support\Facades\App::class,
//...
]

0

Решение

Добавьте к началу вашего класса use App тогда вы можете использовать App Facade как App::environment()

0

Другие решения

Проблема была в jeroennoten/laravel-adminlte пакет, config/adminlte.php файл.

Выглядит как в

'menu' => [
[
'text' => 'API documentation',
'url'  => request()->getSchemeAndHttpHost() . '/docs',
'icon' => 'file-o',
],
],

request()->getSchemeAndHttpHost() вызов из консоли вызвал исключение, и в тот момент что-то, связанное с фасадами, не было инициализировано (было бы приятно узнать, что именно), поэтому мой обработчик вызвал второе исключение, которое я обнаружил.

Я извлек создание меню провайдеру, но не уверен, что это хорошее решение.

class AdminMenuProvider extends ServiceProvider
{
public function boot(Dispatcher $events)
{
$events->listen(BuildingMenu::class, function (BuildingMenu $event) {
$event->menu->add([
'text' => 'API documentation',
'url'  => request()->getSchemeAndHttpHost() . '/docs',
'icon' => 'file-o',
]);
//...
}
}
}
0

По вопросам рекламы [email protected]