Laravel 的 PHP Debugbar 集成
barryvdh/laravel-debugbar 统计
- 下载
- 64M
- 星标
- 15,580
- 开放问题
- 100
- 分支
- 1,548
Barryvdh Laravel-debugbar 自述文件
Laravel 的 Debugbar
这是一个将 PHP Debug Bar 与 Laravel 集成的软件包。它包含一个 ServiceProvider 用于注册调试栏并将其附加到输出。您可以发布资源并在 Laravel 中进行配置。它引导了一些与 Laravel 配合使用的收集器,并实现了几个专为 Laravel 定制的 DataCollectors。它被配置为显示重定向和 (jQuery) Ajax 请求。(在下拉菜单中显示)阅读 文档 了解更多配置选项。
注意:仅在开发环境中使用 DebugBar。不要在公开可访问的网站上使用 Debugbar,因为它会泄漏存储请求中的信息(设计使然)。它还会减慢应用程序速度(因为它需要收集数据)。因此,如果遇到速度缓慢的情况,请尝试禁用一些收集器。
此软件包包含一些自定义收集器
- QueryCollector:显示所有查询,包括绑定 + 定时
- RouteCollector:显示有关当前路由的信息。
- ViewCollector:显示当前加载的视图。(可选:显示共享数据)
- EventsCollector:显示所有事件
- LaravelCollector:显示 Laravel 版本和环境。(默认情况下禁用)
- SymfonyRequestCollector:用有关请求/响应的更多信息替换 RequestCollector
- LogsCollector:显示存储日志中的最新日志条目。(默认情况下禁用)
- FilesCollector:显示 PHP 包含/需要的文件。(默认情况下禁用)
- ConfigCollector:显示配置文件中的值。(默认情况下禁用)
- CacheCollector:显示所有缓存事件。(默认情况下禁用)
引导以下 Laravel 收集器
- LogCollector:显示所有日志消息
- 用于邮件的 SymfonyMailCollector
以及默认收集器
- PhpInfoCollector
- MessagesCollector
- TimeDataCollector(带引导和应用程序计时)
- MemoryCollector
- ExceptionsCollector
它还提供一个外观接口 (Debugbar
),用于轻松记录消息、异常和时间
安装
使用 Composer 要求此软件包。建议仅在开发环境中要求此软件包。
composer require barryvdh/laravel-debugbar --dev
Laravel 使用软件包自动发现,因此不需要您手动添加 ServiceProvider。
当 APP_DEBUG
为 true
时,调试栏将被启用。
如果您使用通配符/回退路由,请确保在您自己的 App ServiceProviders 之前加载 Debugbar ServiceProvider。
没有自动发现的 Laravel
如果您不使用自动发现,请将 ServiceProvider 添加到 config/app.php 中的 providers 数组中
Barryvdh\Debugbar\ServiceProvider::class,
如果您想使用外观来记录消息,请将此添加到 app.php 中的 facades 中
'Debugbar' => Barryvdh\Debugbar\Facades\Debugbar::class,
如果您的 APP_DEBUG=true,则默认情况下会启用分析器。您可以在配置 (debugbar.enabled
) 中或通过在您的 .env
中设置 DEBUGBAR_ENABLED
来覆盖它。在 config/debugbar.php
中查看更多选项。您也可以在您的配置中设置是否要包含/排除供应商文件(FontAwesome、Highlight.js 和 jQuery)。如果您已经在您的网站中使用了它们,请将其设置为 false。您也可以只显示 js 或 css 供应商,将其设置为 'js' 或 'css'。(Highlight.js 需要 css + js,因此将其设置为 true
以进行语法高亮)
使用发布命令将软件包配置复制到您的本地配置
php artisan vendor:publish --provider="Barryvdh\Debugbar\ServiceProvider"
使用 Octane 的 Laravel
确保将 LaravelDebugbar 添加到 config/octane.php
中的刷新列表中。
'flush' => [ \Barryvdh\Debugbar\LaravelDebugbar::class,],
Lumen
对于 Lumen,请在 bootstrap/app.php
中注册不同的 Provider
if (env('APP_DEBUG')) { $app->register(Barryvdh\Debugbar\LumenServiceProvider::class);}
要更改配置,请将文件复制到您的配置文件夹并启用它
$app->configure('debugbar');
用法
现在可以使用 Facade(如果添加了)添加消息,使用 PSR-3 级别(debug、info、notice、warning、error、critical、alert、emergency)
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::addThrowable($e);}
对于最常见的调用,也有一些辅助函数可用
// All arguments will be dumped as a debug messagedebug($var1, $someString, $intValue, $object); // `$collection->debug()` will return the collection and dump it as a debug message. Like `$collection->dump()`collect([$var1, $someString])->debug(); start_measure('render','Time for rendering');stop_measure('render');add_measure('now', LARAVEL_START, microtime(true));measure('My long operation', function() { // Do something…});
如果您愿意,可以通过 Container 或 Facade 添加您自己的 DataCollectors
Debugbar::addCollector(new DebugBar\DataCollector\MessagesCollector('my_messages'));//Or via the App container:$debugbar = App::make('debugbar');$debugbar->addCollector(new DebugBar\DataCollector\MessagesCollector('my_messages'));
默认情况下,Debugbar 注入到 </body>
之前。如果您想自己注入 Debugbar,请将配置选项 'inject' 设置为 false 并自己使用渲染器,并按照 http://phpdebugbar.com/docs/rendering.html 进行操作
$renderer = Debugbar::getJavascriptRenderer();
注意:不使用自动注入将禁用请求信息,因为它是响应后添加的。您可以在配置中添加 default_request datacollector 作为替代方案。
在运行时启用/禁用
您可以在运行时启用或禁用调试栏。
\Debugbar::enable();\Debugbar::disable();
注意:一旦启用,收集器就会被添加(并可能产生额外的开销),因此如果您想在生产环境中使用调试栏,请在配置中禁用它,只在需要时启用它。
存储
Debugbar 会记住之前的请求,您可以使用右侧的浏览按钮查看它们。这只有在您在配置中启用 debugbar.storage.open
时才会起作用。确保您只在本地开发环境中执行此操作,因为否则其他人将能够查看之前的请求。一般来说,Debugbar 应该只在本地使用或至少受 IP 限制。可以传递一个回调函数,它将接收 Request 对象,以便您可以确定对 OpenHandler 存储的访问权限。
Twig 集成
Laravel Debugbar 附带两个 Twig 扩展。这些扩展已在 rcrowe/TwigBridge 0.6.x 上进行了测试
将以下扩展添加到您的 TwigBridge config/extensions.php 中(或手动注册扩展)
'Barryvdh\Debugbar\Twig\Extension\Debug','Barryvdh\Debugbar\Twig\Extension\Dump','Barryvdh\Debugbar\Twig\Extension\Stopwatch',
Dump 扩展将替换 dump 函数,以便使用 DataFormatter 输出变量。Debug 扩展添加了一个 debug()
函数,它将变量传递给 Message Collector,而不是直接在模板中显示它。它转储参数,或者如果为空,则转储所有上下文变量。
{{ debug() }}{{ debug(user, categories) }}
Stopwatch 扩展添加了一个 stopwatch 标签,类似于 Symfony/Silex Twigbridge 中的标签。
{% stopwatch "foo" %} …some things that gets timed{% endstopwatch %}