new999day/lumen-debugbar

Laravel 的 PHP Debugbar 集成

v3.7.1 2022-09-02 09:59 UTC

README

Unit Tests Packagist License Latest Stable Version Total Downloads Fruitcake

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

Debugbar 3.3 Screenshot

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

此包包含一些自定义 Collector

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

为 Laravel 启动以下 Collector

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

和默认的 Collector

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

它还提供了一个用于轻松记录消息、异常和时间的 facade 接口(Debugbar

安装

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

composer require new999day/lumen-debugbar --dev

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

APP_DEBUGtrue 时,Debugbar 将被启用。

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

Laravel 无自动发现

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

Barryvdh\Debugbar\ServiceProvider::class,

如果您想使用 facade 记录消息,请将此添加到您的 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"

Laravel 与 Octane

请确保将 LaravelDebugbar 添加到 config/octane.php 中的 flush 列表。

    '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 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…
});

如果您想的话,可以通过容器或 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();

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

运行时启用/禁用

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

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

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

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 函数,使用 DataFormatter 输出变量。调试扩展添加了一个 debug() 函数,它将变量传递给消息收集器,而不是直接在模板中显示它。它输出参数,或当为空时;所有上下文变量。

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

计时器扩展添加了一个类似于 Symfony/Silex Twigbridge 中的 计时器标签

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