konafets / typo3_debugbar
利用PHP Debugbar向前端提供系统健康信息。
Requires
- maximebf/debugbar: ^1.15
- typo3/cms-core: >=8.7.0 <9
Replaces
- typo3_debugbar: 1.3.3
README
这是一个将PHP Debug Bar集成到TYPO3的包。它使用几个钩子将资产和自身包含到前端输出中。它启动了一些收集器以与TYPO3协同工作,并实现了一些自定义数据收集器,适用于TYPO3。
阅读文档以获取更多配置选项。

信息:仅在开发中使用DebugBar。它可能会减慢应用程序的运行速度(因为它需要收集数据)。因此,当遇到速度减慢的情况时,请尝试禁用一些收集器。
该扩展包含默认的收集器
- PhpInfoCollector:显示PHP版本
- MessagesCollector:从应用程序内部收集消息并将其推送到DebugBar
- TimeDataCollector:您可以在其中启动和停止计时器。默认情况下,它计时应用程序。更多内容请参阅使用部分
- MemoryCollector:显示内存使用情况
- ExceptionsCollector:从应用程序内部收集异常并将其推送到DebugBar
并包含一些自定义收集器
- InfoCollector:显示与管理员面板信息面板相同的信息
- MySqliCollector:显示所有查询,包括定时和准备语句的值
- Typo3Collector:显示TYPO3版本、区域和环境
- AuthCollector:显示登录的后台用户的用户名
- SessionCollector:显示会话数据
安装
使用composer安装此包。建议仅用于开发需要此包。
composer require konafets/typo3_debugbar --dev
之后,您需要在扩展管理器中激活扩展。默认情况下已启用DebugBar,如果您作为管理员登录到后端,它将显示给您。
使用方法
通过扩展管理器配置扩展。在那里您可以启用/禁用DebugBar以及数据收集器。
无处不在使用
Typo3DebugBar实现了SingletonInterface
,因此您可以通过debugbar()
获取相同的实例。这为您从TYPO3内部与DebugBar交互打开了可能性。
记录异常
try { throw new Exception('foobar'); } catch (Exception $e) { debugBar()->addThrowable($e); }
这些将在异常面板中显示。
添加消息
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', TYPO3_START, microtime(true)); debugBar()->measure('My long operation', function() { // Do something… }); debugbar_debug($value);
或更简洁地
startMeasure('render', 'Time for rendering'); stopMeasure('render'); addMeasure('now', TYPO3_START, microtime(true)); measure('My long operation', function() { // Do something… });
数据库
此面板显示与名为默认的连接的所有已发出查询。如果没有此名称的连接,则将使用ConnectionPool
的第一个连接。
使用占位符
默认情况下,语句以准备语句的形式显示,这意味着占位符在语句内部,而实际值在每个语句下面的隐藏表中。要查看它们,请单击语句。

使用参数
要直接在语句中渲染值,请在扩展设置中激活with_params
选项。
信息:该扩展使用connectToDB钩子将Doctrine\DBAL\Logging\DebugStack
注入到连接中作为记录器。在渲染过程结束时,它会检索记录器并显示记录的查询。重要的是要理解,无论是否在前端显示,该扩展都会在任何情况下添加Doctrine\DBAL\Logging\DebugStack
。这是因为从一开始就记录所有查询...但那时BE用户尚未初始化,并且尚不清楚是否启用了DebugBar。这是一个经典的鸡生蛋,蛋生鸡问题。
VarDump
众所周知,DebugUtility::var_dump()的输出...也众所周知,它会破坏布局。让我们将输出移至TYPO3 Debugbar。使用Konafets\Typo3Debugbar\Overrides\DebuggerUtility::var_dump($variable)
,可以得到如下输出

生命周期
如上所述,该扩展使用钩子。以下图展示了请求生命周期中的使用情况。
致谢
该扩展深受Laravel Debugbar的启发。感谢你的出色工作Barry vd. Heuvel。我还从Laravel复制了ServiceProvider的想法。