0

我有这样一个简化版的类

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

2 回答 2

0

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

于 2017-10-10T05:38:03.660 回答
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',
            ]);
            //...
        }
     }
}
于 2017-10-10T06:04:17.440 回答