Laravel 5.5。应用程序外观在异常处理程序中不起作用

Laravel 5.5. App facade is not working in the Exception handler

我有这么一个简化版的class

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,
    //...
]

添加到 class use App 的顶部,然后您就可以像 App::environment()

这样使用 App Facade

问题出在 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',
            ]);
            //...
        }
     }
}