ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 调试器扩展 这一章了解一下就行了。一般也不用修改或扩展这个调试器。 Tracy是一个调试应用程序的好工具。 但是,您有时需要比Tracy提供的更多信息。 您将了解: 1、创建自己的调试器栏面板 2、创建自己的Bluescreen扩展 # 调试器条扩展 为Debugger Bar创建新扩展很简单。 您需要使用getTab()和getPanel()方法来实现Tracy \ IBarPanel接口。 方法必须返回选项卡(调试器栏上的小标签)和面板(在单击选项卡后显示的弹出窗口)的HTML代码。 如果getPanel()不返回任何内容,将只显示选项卡。 如果getTab()不返回任何内容,则不显示任何内容,getPanel()将不会被调用。 ~~~ class ExamplePanel extends Nette\Object implements Tracy\IBarPanel { public function getTab() { return ...; } public function getPanel() { return ...; } } ~~~ ## 注册 注册通过调用Tracy \ Bar :: addPanel(): ~~~ Tracy\Debugger::getBar()->addPanel(new ExamplePanel); ~~~ 或者可以在应用程序配置中简单地注册您的面板: ~~~ tracy: bar: - ExamplePanel ~~~ ## 标签HTML代码 看起来像这样: ~~~ <span title="Explaining tooltip"> <img src="data:image/png;base64,<encoded thumbnail image>" /> Title </span> ~~~ 对于编码图像,您可以使用Nette \ Templating \ DefaultHelpers :: dataStream()。 如果您不需要工具提示,您可以离开<span>出。 ## 面板HTML代码 看起来像这样: ~~~ <h1>Title</h1> <div class="nette-inner"> ... content ... </div> ~~~ 标题应与标签中相同,或包含其他信息。 一个扩展可以注册多次,因此建议不要使用id属性来设置样式。 您可以使用类,最好使用nette-addons- <class-name> [ - <optional>]格式。 当创建CSS时,最好使用#nette-debug .class,因为这样的规则比reset具有更高的优先级。 ## 默认样式 在面板中,元素<a>,<table>,<pre>,<code>有默认样式。 您还可以对隐藏元素使用.nette-hidden和.nette-collapsed。 要创建用于隐藏或显示其他元素的链接,请使用rel和id属性连接它们。 ~~~ <a href='#' rel='#nette-addons-className-{$counter}'>Details&nbsp;&#x25ba;</a> <div id="nette-addons-className-{$counter}">...</div> ~~~ 使用静态计数器来防止一页上出现重复的ID。 ## 蓝屏扩展 您可以添加您自己的异常可视化(替代实现IDebugPanel)或面板,它将出现在(红色)蓝屏上。 扩展如下: ~~~ Tracy\Debugger::getBlueScreen()->addPanel(function($e) { // catched exception return [ 'tab' => '...Title...', 'panel' => '...content...', ]; }); ~~~ 如果匿名函数不返回任何内容,则不会显示面板。 该函数被调用两次。 第一次在参数$ e中捕获异常,并且面板显示在蓝屏顶部。 第二次在$ e中给出NULL,并且面板显示在底部。 您可以通过在数组中返回“bottom”=> true强制在底部进行渲染。 函数将不会渲染前两次,并将使用NULL参数调用第三次。