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

时间:2017-10-10 05:28:57

标签: php laravel exception-handling laravel-5.5 laravel-exceptions

我有一个类

的简化版本
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,
    //...
]

2 个答案:

答案 0 :(得分:0)

添加到您的班级use App的顶部,然后您可以使用App Facade,如App::environment()

答案 1 :(得分: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',
            ]);
            //...
        }
     }
}