barryvdh / laravel-debugbar
Laravel 的 PHP Debugbar 集成
Requires
- php: ^8.0
- illuminate/routing: ^9|^10|^11
- illuminate/session: ^9|^10|^11
- illuminate/support: ^9|^10|^11
- maximebf/debugbar: ~1.23.0
- symfony/finder: ^6|^7
Requires (Dev)
- mockery/mockery: ^1.3.3
- orchestra/testbench-dusk: ^5|^6|^7|^8|^9
- phpunit/phpunit: ^9.6|^10.5
- squizlabs/php_codesniffer: ^3.5
- dev-master / 3.14.x-dev
- v3.14.0
- v3.13.5
- v3.13.4
- v3.13.3
- v3.13.2
- v3.13.1
- v3.13.0
- v3.12.4
- v3.12.3
- v3.12.2
- v3.12.1
- v3.12.0
- v3.11.1
- v3.11.0
- v3.10.6
- v3.10.5
- v3.10.4
- v3.10.3
- v3.10.2
- v3.10.1
- v3.10.0
- 3.9.x-dev
- v3.9.3
- v3.9.2
- v3.9.1
- v3.9.0
- v3.8.2
- v3.8.1
- v3.8.0
- v3.7.0
- v3.6.8
- v3.6.7
- v3.6.6
- v3.6.5
- v3.6.4
- v3.6.3
- v3.6.2
- v3.6.1
- v3.6.0
- v3.5.7
- V3.5.6
- v3.5.5
- v3.5.4
- v3.5.3
- v3.5.2
- v3.5.1
- v3.5.0
- 3.4.x-dev
- v3.4.2
- v3.4.1
- v3.4.0
- v3.3.3
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.9
- v3.2.8
- v3.2.7
- v3.2.6
- v3.2.5
- v3.2.4
- v3.2.3
- v3.2.2
- v3.2.1
- v3.2.0
- v3.1.5
- v3.1.4
- v3.1.3
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.1
- v3.0.0
- 2.4.x-dev
- v2.4.3
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.2
- v2.3.1
- v2.3.0
- V2.2.3
- v2.2.2
- v2.2.1
- v2.2.0
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- 1.8.x-dev
- v1.8.9
- v1.8.8
- v1.8.7
- v1.8.6
- v1.8.5
- v1.8.4
- v1.8.3
- v1.8.2
- v1.8.1
- v1.8.0
- v1.7.7
- v1.7.6
- v1.7.5
- v1.7.4
- v1.7.3
- v1.7.2
- v1.7.1
- v1.7.0
- v1.6.8
- v1.6.7
- v1.6.6
- v1.6.5
- v1.6.4
- v1.6.3
- v1.6.2
- v1.6.1
- v1.6.0
- v1.5.5
- v1.5.4
- v1.5.3
- v1.5.2
- v1.5.1
- v1.5.0
- v1.4.3
- v1.4.2
- v1.4.1
- v1.4
- v1.3.1
- v1.3
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0
- v0.3.2
- v0.3.1
- v0.3
- v0.2
- v0.1.0
- dev-tweak-serviceprovider
- dev-feat-exclude-queries
- dev-feat-hide-empty-tabs
- dev-feat-copy-icon
- dev-feat-fix-redirect-session
- dev-fix-artifacts
- dev-nckrtl-ui-refinements
- dev-feat-limit-queries
- dev-barryvdh-patch-1
- dev-barryvdh-php8.1
- dev-feat-cspnonce
- dev-feat-injecthead
- dev-feat-multiauth
- dev-telescope-link
- dev-feat-csp
- dev-revert-339-dha0stw-patch-disableVendors
- dev-reset
- dev-revert-353-1.8
- dev-revert-463-master
- dev-revert-350-fix_query_logging_is_off
This package is auto-updated.
Last update: 2024-09-20 12:22:22 UTC
README
这是一个用于将 PHP Debug Bar 集成到 Laravel 的包。它包含一个 ServiceProvider,用于注册 debugbar 并将其附加到输出。您可以通过 Laravel 发布资源和进行配置。它启动了一些 Collector 以与 Laravel 一起工作,并实现了一些针对 Laravel 的自定义 DataCollector。它配置为显示重定向和(jQuery)Ajax 请求。(在下拉菜单中显示)阅读 文档 了解更多配置选项。
注意:仅在生产环境中使用 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_DEBUG
为 true
时,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 %}