Laravel 的 PHP Debugbar 集成

barryvdh/laravel-debugbar image

barryvdh/laravel-debugbar 统计

下载
64M
星标
15,580
开放问题
100
分支
1,548

在 GitHub 上查看 →

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_DEBUGtrue 时,调试栏将被启用。

如果您使用通配符/回退路由,请确保在您自己的 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 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…
});

如果您愿意,可以通过 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 %}
Cube

Laravel 新闻通讯

加入 40,000 多名其他开发人员,永不错过新的提示、教程等。


Barryvdh Laravel Debugbar 相关文章

Eloquent Performance: 4 Examples of N+1 Query Problems image

Eloquent 性能:4 个 N+1 查询问题示例

阅读文章
Output Eloquent Builder SQL to Your Favorite Debugging Tool image

将 Eloquent Builder SQL 输出到您最喜欢的调试工具

阅读文章
HTTP Client Dashboard for Laravel image

Laravel HTTP 客户端仪表板

阅读文章
Laravel Debugbar Companion App image

Laravel Debugbar 伴侣应用

阅读文章
Laravel Debugbar Adds Dark Mode image

Laravel Debugbar 添加深色模式

阅读文章
Laravel Debugbar Gets a Big UI Update image

Laravel Debugbar 获得重大 UI 更新

阅读文章
LaraJobs logo

LaraJobs

官方 Laravel 工作板

LaraJobs
MongoDB logo

MongoDB

通过将 MongoDB 与 Laravel 强力集成,增强您的 PHP 应用程序,使开发人员能够轻松高效地构建应用程序。支持事务、搜索、分析和移动用例,同时使用熟悉的 Eloquent API。了解 MongoDB 如何将灵活、现代的数据库融入您的 Laravel 应用程序。

MongoDB
Shift logo

Shift

正在运行旧版本的 Laravel?即时、自动化的 Laravel 升级和代码现代化,使您的应用程序保持最新。

Shift
Rector logo

Rector

您无缝升级 Laravel、降低成本和加速创新的合作伙伴,助力企业取得成功

Rector
SaaSykit: Laravel SaaS Starter Kit logo

SaaSykit: Laravel SaaS 启动套件

SaaSykit 是一个 Laravel SaaS 启动套件,包含运行现代 SaaS 所需的所有功能。支付、精美结账、管理面板、用户仪表板、身份验证、即用型组件、统计信息、博客、文档等。

SaaSykit: Laravel SaaS 启动套件
Kirschbaum logo

Kirschbaum

提供创新和稳定性,确保您的 Web 应用程序取得成功。

Kirschbaum