1、簡介
Laravel Debugbar 在 Laravel 5 中集成了 PHP Debug Bar ,用於顯示調試及錯誤信息以方便開發。該擴展包包含了一個 ServiceProvider 用於注冊調試條及開發過程中數據集合顯示,你可以發布其前端資源和配置,還可以配置顯示重定向及 Ajax 請求。
注意:只能在開發過程中使用該 Laravel Debugbar ,使用該擴展包對性能有影響(收集、聚合數據有系統開銷)。
該擴展包包含以下自定義收集器:
- QueryCollector:顯示所有查詢,包含綁定和時間
- RouteCollector:顯示當前路由信息
- ViewCollector:顯示當前加載的視圖(可選:顯示共享數據)
- EventsCollector:顯示所有事件
- LaravelCollector:顯示Laravel版本和環境
- SymfonyRequestCollector:替換 RequestCollector,顯示關於請求/響應的更多信息
- LogsCollector:顯示來自日志文件的最新日志條目
- FilesCollector:顯示 PHP include/require 的文件
- ConfigCollector:顯示配置文件配置值
Laravel啟動時包含的收集器:
- LogCollector:顯示所有日志信息
- 為郵件提供的 SwiftMailCollector 和 SwiftLogCollector
以及以下默認收集器:
- PhpInfoCollector
- MessageCollector
- TimeDataCollector(包含啟動及應用時間)
- MemoryCollector
- ExceptionsCollector
此外還提供了一個門面用於記錄消息、時間和異常。
2、安裝
使用 Composer 安裝該擴展包:
composer require barryvdh/laravel-debugbar
安裝完成后,在 config/app.php
中注冊服務提供者到 providers
數組。
Laravel 5.x
注冊如下服務提供者:
Barryvdh\Debugbar\ServiceProvider::class,
如果你想使用門面,在配置文件 config/app.php
中添加如下門面別名到 aliases
數組:
'Debugbar' => Barryvdh\Debugbar\Facade::class,
然后運行如下 Artisan 命令將該擴展包的配置文件拷貝到 config
目錄下:
php artisan vendor:publish
如果配置文件中 debug
設置為 true
的話,Debugbar 分析器默認是啟用的,如果你想要關閉該分析器,在配置文件 config/debugbar.php
中設置 enabled
為 false
即可。在該配置文件中,還可以進行更多配置,這里不一一贅述了。
對於 Lumen 而言,在 bootstrap/app.php
中注冊服務提供者:
if (env('APP_DEBUG')) { $app->register(Barryvdh\Debugbar\LumenServiceProvider::class); }
要修改默認配置,將配置文件拷貝到 config
目錄並做相應修改:
$app->configure('debugbar');
3、使用
現在你可以使用 Debugbar 門面添加 PSR-3 級別消息:
Debugbar::info($object); Debugbar::error('Error!'); Debugbar::warning('Watch out…'); Debugbar::addMessage('Another message', 'mylabel');
還可以設置開始/中止時間:
Debugbar::startMeasure('render','Time for rendering'); Debugbar::stopMeasure('render'); Debugbar::addMeasure('now', LARAVEL_START, microtime(true)); Debugbar::measure('My long operation', function() { // Do something… });
或者記錄異常:
try { throw new Exception('foobar'); } catch (Exception $e) { Debugbar::addException($e); }
此外還有輔助函數實現上述調用:
// All arguments will be dumped as a debug message debug($var1, $someString, $intValue, $object); start_measure('render','Time for rendering'); stop_measure('render'); add_measure('now', LARAVEL_START, microtime(true)); measure('My long operation', function() { // Do something… });
如果你想要添加自己的數據收集器(DataCollector),可以通過容器或門面實現:
Debugbar::addCollector(new DebugBar\DataCollector\MessagesCollector('my_messages'));
或者通過 App 容器:
$debugbar = App::make('debugbar'); $debugbar->addCollector(new DebugBar\DataCollector\MessagesCollector('my_messages'));
默認情況下,Debugbar 被注入到 </body>
之前。如果你想要自己注入 Debugbar,在其配置文件中設置 inject
為 false
然后使用渲染器自己渲染:
$renderer = Debugbar::getJavascriptRenderer();
更多渲染實現請參考: http://phpdebugbar.com/docs/rendering.html
注意:使用自動注入的話將會禁止顯示 Request 信息,因為在響應之后才會添加該信息。你可以通過在配置文件中添加 default_request
數據收集器作為替換方案。
如果你想要在運行時開啟/關閉 Debugbar,可以通過如下方式:
\Debugbar::enable();
\Debugbar::disable();