barryvdh/laravel-debugbar

Laravel 的 PHP Debugbar 集成

资助包维护!
barryvdh
fruitcake.nl

安装次数: 84,082,680

依赖者: 669

建议者: 17

安全: 0

星标: 17,053

关注者: 281

分支: 1,542

开放问题: 75

v3.14.0 2024-09-20 12:16 UTC

This package is auto-updated.

Last update: 2024-09-20 12:22:22 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 Dark Mode screenshot

注意:仅在生产环境中使用 DebugBar。不要在公开访问的网站上使用 Debugbar,因为它会泄露存储请求中的信息(按设计)。它也可能减慢应用程序的速度(因为它需要收集数据)。因此,当遇到速度减慢的情况时,尝试禁用一些 Collector。

此包包括一些自定义 Collector

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

为 Laravel 启动以下 Collector

  • LogCollector:显示所有日志消息
  • SymfonyMailCollector for Mail

以及默认的 Collector

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

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

安装

使用 composer 安装此包。建议仅在生产环境中要求此包。

composer require barryvdh/laravel-debugbar --dev

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

APP_DEBUGtrue 时,Debugbar 将被启用。

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

Laravel 没有自动发现

如果您不使用自动发现,请将 ServiceProvider 添加到 providers 列表中。对于 Laravel 11 或更高版本,在 bootstrap/providers.php 中添加 ServiceProvider。对于 Laravel 10 或更低版本,在 config/app.php 中添加 ServiceProvider。

Barryvdh\Debugbar\ServiceProvider::class,

如果您想使用 facade 记录消息,请在 app/Providers/AppServiceProvider.php 类的 register 方法中添加以下内容

public function register(): void
{
    $loader = \Illuminate\Foundation\AliasLoader::getInstance();
    $loader->alias('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

请确保在config/octane.php中将LaravelDebugbar添加到您的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');

使用方法

您现在可以使用外观(当添加时)使用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…
});

如果您想添加自己的DataCollectors,可以通过Container或外观进行

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 datacollector作为替代。

运行时启用/禁用

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

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

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

存储

Debugbar会记住之前的请求,您可以使用右侧的浏览按钮查看。这将仅在您在配置中启用debugbar.storage.open时才有效。请确保您只在本地开发时这样做,否则其他人将能够查看之前的请求。通常,Debugbar应仅在本地使用或至少通过IP限制。您可以传递一个回调,该回调将接收请求对象,因此您可以根据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()函数,它将变量传递到消息收集器,而不是在模板中直接显示。它导出参数,或当为空时;所有上下文变量。

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

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

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