У меня есть такая упрощенная версия класса
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,
//...
]
Добавьте к началу вашего класса use App
тогда вы можете использовать App Facade как App::environment()
Проблема была в 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',
]);
//...
}
}
}