# 调试器扩展
这一章了解一下就行了。一般也不用修改或扩展这个调试器。
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 ►</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参数调用第三次。
- Nette简介
- 快速开始
- 入门
- 主页
- 显示文章详细页
- 文章评论
- 创建和编辑帖子
- 权限验证
- 程序员指南
- MVC应用程序和控制器
- URL路由
- Tracy - PHP调试器
- 调试器扩展
- 增强PHP语言
- HTTP请求和响应
- 数据库
- 数据库:ActiveRow
- 数据库和表
- Sessions
- 用户授权和权限
- 配置
- 依赖注入
- 获取依赖关系
- DI容器扩展
- 组件
- 字符串处理
- 数组处理
- HTML元素
- 使用URL
- 表单
- 验证器
- 模板
- AJAX & Snippets
- 发送电子邮件
- 图像操作
- 缓存
- 本土化
- Nette Tester - 单元测试
- 与Travis CI的持续集成
- 分页
- 自动加载
- 文件搜索:Finder
- 原子操作