Bugzilla之类继承体系结构及其扩展应用(一)
来源:互联网 发布:realtimepcr数据做图 编辑:程序博客网 时间:2024/06/03 20:48
Bugzilla是著名的开源bug跟踪系统,其开源的特性决定了用户可以根据自身的需要来进行定制,下面我将以版本3.4.4为基础来和大家聊一聊。
本文首先介绍了Bugzilla中的部分类继承结构,随后说明了如何利用Bugzilla中现有的类来对其进行扩展。
Bugzilla中,大部分数据库表都各自对应于一个Perl Module,同时也是一个类,如Bug类处理数据库中的Bugs表,User类处理数据库中的Profiles表等等,而且它们都继承自共同的基类Object。Bugzilla中的常用类层次结构如下:
注意,上图中未包括Flag、Keyword等类。
Object是Bugzilla对象的基类,你不能直接创建一个类型为Object的对象,应该只使用Object的子类。而Object基类的存在使得我们更容易创建新的类。最简单的方法是,你只需要定义DB_TABLE和DB_COLUMNS,有些时候可能还需要定义LIST_ORDER,你就拥有了一个全新的子类。
怎么样,很简单吧!下面我们就结合一个简单的需求来看看要拥有一个功能完备的子类还需要做哪些事情。
现在,假设由于需要,你在数据库中新建了一张表rc,简单的表设计如下:
现在我们要操作数据库中的这张表,不想从头写起,怎么办?
对,从Object派生,你只需要下面几行代码:
这样,一个处理数据库中的rc表的类就基本建立完了。通常,为了让新的子类功能完备,我们需要定义下面表格中的一些量:
在完成了上述定义后,你可能还需要定义每个字段的accessor和setter,当然你也可以通过对象的引用来直接存取字段达到同样的目的(如$object->{'content'})。但从封装的角度考虑,我并不推荐这样做。下面我给出'content'字段的示例:
其中的'set'函数继承自Object基类。
这样,一个功能完备的子类RC就完成了,现在你可以正常使用这个类来处理和数据库中对应rc表的交互了。你也可以根据自己的需要向类中添加新的方法。
今天就写到这里,最后是references.
Referene:
1. Bugzilla Source Code
2. Bugzilla API Document
3. Bugzilla Database Schema
- Bugzilla之类继承体系结构及其扩展应用(一)
- Bugzilla之类继承体系结构及其扩展应用(二)
- Javascript学习笔记之类与继承(一)
- SQLServer和Web应用体系结构(一)
- 扩展欧几里得及其应用
- 钩子及其应用(一)
- 指针及其应用(一)
- iOS之类别(Category)、类扩展、继承的区别
- C++之类(一)
- 继承与多态(一):使用继承扩展类
- 浅谈软件体系结构思想及其应用(原创)
- 扩展欧几里得算法及其应用
- 扩展欧几里得算法及其应用
- 扩展欧几里得算法及其应用
- 扩展欧几里得算法及其应用
- 扩展欧几里得定理及其应用
- 扩展欧几里得算法及其应用
- KMP算法及其扩展应用
- what's up
- 海地经历200年来最强震 首都成废墟总统府震塌
- tiff/tfw, jpg/jpgw坐标文件的格式
- 深有体会
- DataBind()与Eval()
- Bugzilla之类继承体系结构及其扩展应用(一)
- 2010年初意外的惊喜——通过信息系统项目管理师考试
- 向量运算
- Gridview模板列绑定数据字段
- 梦
- Math的应用
- 鲁迅的故乡与我的故乡 IT版
- 信心
- 初来乍到