禅道的扩展机制在前面的文档已经介绍过了,这篇文档主要介绍model的新扩展机制。当然,以前的扩展机制也是适用的。
更多开源详情:http://www.zentao.net/
一、适应版本
要使用新的扩展机制,必须是禅道3.2以上版本。
二、类扩展
1、扩展文件名
以misc模块的model扩展为例,文件结构如下:
在misc/ext/model/目录下面新建一个class目录,扩展文件就写在class目录下面。
扩展文件名格式:插件名 + class.php, 插件名是小写。例如,如果插件名是testBox,那么扩展文件的名字就是:testbox.class.php。
2、扩展文件内容
如图:
类名的格式:插件名 + 模块名。 插件名要小写, 模块名的首字母大写。例如,插件名是testBox,对misc模块做扩展,那么类名是testboxMisc。
3、扩展的调用
扩展的在任意model中调用,还是以testBox对misc模块扩展为例,可以在misc/ext/model/目录下新建一个textbox.php的文件,此处跟前面扩展一样。
示例如下:
通过$this->loadExtension('插件名')方法来调用扩展。同时,在使用loadExtension方法后,会有$this->类名 的变量,后面可以用这个变量调用扩展。
三、钩子扩展
钩子扩展是新的扩展方式。可以通过钩子对model做扩展,而不用再重新定义。
1、扩展文件名
文件结构如下:
以misc模块的model扩展为例, 在misc/ext/model/目录下面新建一个hook目录,扩展文件就写在hook目录下面。
扩展文件名格式:方法名 + 字母 + .php, 中间部分主要是防止文件重名,建议用插件名。例如,如果对hello做钩子扩展,那么扩展文件的名字就是:hello.test.php。
2、扩展文件内容
如图:
因为钩子文件是都model做扩展,所以可以调用model和系统的方法,具体可以自己实践一下。
3、扩展的调用
如果你是禅道3.2以上版本,则系统会自动加载钩子,只要你的扩展写的没错,那扩展就应该可以实现。