toanld/laravel-debugbar

Laravel 的 PHP Debugbar 集成

资助包维护!
barryvdh

v3.5.8 2020-10-09 07:11 UTC

README

Unit Tests Packagist License Latest Stable Version Total Downloads

这是一个将 PHP Debug Bar 集成到 Laravel 的包。它包括一个 ServiceProvider 用于注册调试栏并将其附加到输出。您可以通过 Laravel 发布资源和配置它。它启动了一些 Collectors 以与 Laravel 一起工作,并实现了几个自定义 DataCollectors,专门针对 Laravel。它配置为显示重定向和(jQuery)Ajax 请求。(在下拉菜单中显示)阅读 文档 了解更多配置选项。

Debugbar 3.3 Screenshot

注意:仅在开发中使用 DebugBar。它可能会减慢应用程序的速度(因为它需要收集数据)。因此,当遇到速度慢的问题时,尝试禁用一些收集器。

此包包括一些自定义收集器

  • QueryCollector:显示所有查询,包括绑定 + 时间
  • RouteCollector:显示当前路由的信息。
  • ViewCollector:显示当前加载的视图。(可选:显示共享数据)
  • EventsCollector:显示所有事件
  • LaravelCollector:显示 Laravel 版本和环境。(默认禁用)
  • SymfonyRequestCollector:用更多关于请求/响应的信息替换 RequestCollector
  • LogsCollector:显示存储日志中的最新条目。(默认禁用)
  • FilesCollector:显示 PHP 所包含/所需的文件。(默认禁用)
  • ConfigCollector:显示配置文件中的值。(默认禁用)
  • CacheCollector:显示所有缓存事件。(默认禁用)

为 Laravel 启动以下收集器

  • LogCollector:显示所有日志消息
  • SwiftMailCollector 和 SwiftLogCollector 用于邮件

和默认收集器

  • PhpInfoCollector
  • MessagesCollector
  • TimeDataCollector(启动和应用程序计时)
  • MemoryCollector
  • ExceptionsCollector

它还提供了一个 Facade 接口,用于轻松记录消息、异常和时间

安装

使用 composer 需要此包。建议仅将包用于开发。

composer require barryvdh/laravel-debugbar --dev

Laravel 使用包自动发现,因此不需要您手动添加 ServiceProvider。

APP_DEBUGtrue 时,Debugbar 将被启用。

如果您使用了一个通配符/回退路由,请确保在您的 App ServiceProviders 之前加载 Debugbar ServiceProvider。

Laravel 没有自动发现

如果您不使用自动发现,请将 ServiceProvider 添加到 config/app.php 中的 providers 数组。

Barryvdh\Debugbar\ServiceProvider::class,

如果您想使用 facade 来记录消息,请将此添加到 app.php 中的 facades

'Debugbar' => Barryvdh\Debugbar\Facade::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"

Lumen

对于Lumen,在bootstrap/app.php中注册不同的Provider

if (env('APP_DEBUG')) {
 $app->register(Barryvdh\Debugbar\LumenServiceProvider::class);
}

要更改配置,请将文件复制到您的配置文件夹并启用它

$app->configure('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::addThrowable($e);
}

还有可用于最常见的调用的辅助函数

// All arguments will be dumped as a debug message
debug($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…
});

如果您愿意,可以通过容器或外观添加自己的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();

注意:不使用自动注入将禁用请求信息,因为那是添加在响应之后的。您可以在配置中添加默认_request数据收集器作为替代。

运行时启用/禁用

您可以在运行时启用或禁用debugbar。

\Debugbar::enable();
\Debugbar::disable();

注意。一旦启用,收集器将被添加(可能会产生额外开销),因此如果您想在生产中使用debugbar,请在配置中禁用它,并在需要时才启用。

Twig集成

Laravel Debugbar附带两个Twig扩展。这些与rcrowe/TwigBridge 0.6.x进行了测试

将以下扩展添加到您的TwigBridge配置文件extensions.php中(或手动注册扩展)

'Barryvdh\Debugbar\Twig\Extension\Debug',
'Barryvdh\Debugbar\Twig\Extension\Dump',
'Barryvdh\Debugbar\Twig\Extension\Stopwatch',

dump扩展将替换dump函数以使用DataFormatter输出变量。Debug扩展添加一个debug()函数,它将变量传递给消息收集器,而不是直接在模板中显示。它输出参数,或当为空时;所有上下文变量。

{{ debug() }}
{{ debug(user, categories) }}

Stopwatch扩展添加一个类似于在Symfony/Silex Twigbridge中的stopwatch标签

{% stopwatch "foo" %}
    …some things that gets timed
{% endstopwatch %}