Laravel 5.5。应用程序的外观是不是在异常处理程序

问题描述:

工作,我有一个类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, 
    //... 
] 

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

添加到您的类use App,那么你可以使用App门面的顶部像App::environment()

+0

问题是我根本无法使用这个门面。 ''App'或'App'都带'use'。为了简单起见,我在示例中使用了'\ App'版本:) –

+0

您是否尝试导入App'使用Illuminate \ Support \ Facades \ App'的完整路径?那样有用吗? – Saad

+0

是的,我也试过了。我决定,这是一个非常奇怪的错误,所以它值得自己的问题:) –