禅道项目管理软件扩展机制简介

转载于:http://www.zentao.net/article-view-78847.html

    禅道项目管理软件的框架是采用了自主研发的ZenTaoPHP框架。通过该框架,我们实现了禅道项目管理软件灵活多变的扩展机制,通过这个扩展机制,你可以开发自己完全独立的模块,也可以对现有模块功能进行覆盖,追加。通过扩展机制,你拥有了对禅道完全的控制权。

一、扩展的类型

从总体来讲,插件可以分为独立的模块、模块的扩展,类库的扩展

二、独立的模块

独立的模块和禅道核心的模块没有什么区别,目录部署在禅道的module目录下面,里面按照mvc进行划分。具体的内容,请参考ZenTaoPHP框架帮助。

三、对现有模块的扩展

3.1 目录结构

某一个模块所有的扩展都部署在该模块的opt目录下面,并且按照目录分开,control, model, view, config, lang,分别存储control的扩展,model的扩展, view的扩展,config的扩展和lang的扩展。

3.2 control的扩展

对现有模块的control层的扩展有两种,一种是覆盖现有的方法,一种是增加新的方法。无论是覆盖现有的方法,还是新增方法,扩展文件都是以方法名为名(小写)。比如以misc模块为例,我们来新增一个getsid的方法,用来获取session的id。那么只需要建立misc/opt/control/getsid.php,代码为:

class misc extends control
{
      public function getsid()
     {
         $this->view->header->title = 'getsid';
         $this->view->sid = session_id();
         $this->view->test = $this->misc->test();
        $this->display();
      }
}

然后就可以了。需要说明的是,这个地方的类,可以直接继承自control类,也可以继承自misc类。如果是后者,则需要这么写:

include '../../control.php';       misc的contro类文件需要手工包含。
class myMisc extends misc
{
    public function getsid()
    {
    }
}

通过第二种方式,可以调用misc类的其他方法,实现代码的重用。

3.3 model的扩展

model的扩展文件命名与control类似,在opt/model/目录下面建立相应的以方法为名的文件,里面实现对应的查询功能。比如,我们打算对misc的model新增一个方法,叫做foo,那么只需要在misc/opt/model/下面建立foo.php,代码如下:

public function foo()
{
      return 'foo';
}

需要说明的是,这里面不不包含<?php ?>的起止符号,也不包含类的声明。就只是一个方法的声明。禅道框架在执行的时候,会自动将扩展目录下面的foo.php里面的代码,替换misc/model.php中的foo方法的代码。如果是新增的方法,则会追加到misc/model.php的代码中,最终生成一个合并之后的model类文件。

3.4 view的扩展

视图的扩展也是同样的命名,以当前访问的control的方法为名。视图文件的扩展分为两种,一种是完全覆盖原来的视图文件,文件名为xxx.html.php。xxx为当前访问的方法名。还有一种是钩子文件,为xxx.html.hook.php。该钩子文件会在整个模板加载完之后加载,在里面可以执行相应的php代码,或者js代码。这样就提供了一种通过js来动态修改页面元素的机制,从而达到对页面元素的完全控制。

比如misc/opt/view/getsid.html.hook.php

<script language="Javascript">
$('#topbar').css('color', 'red');
</script>

通过上面这段js代码,实现了对顶部导航条的加红显示。

3.5 配置的扩展

配置文件存放在opt/config/目录下面,可以由多个文件,禅道框架会自动加载该目录下面以config开头的.php文件。这样不同的扩展可以有自己的配置项,彼此之间不会冲突。

3.6 语言的扩展

语言的扩展文件存放在opt/lang/目录下面。按照不同的语言建立相应的目录,比如zh-cn下面,可以有多个文件,禅道框架会自动加载该目录下面所有以.php结尾的文件。

比如扩展bug模块的语言文件,可以建立module/bug/opt/lang/zh-cn/1.php。

四、独立的类库

独立的类库文件和通常的php class没有任何区别,只要将其存放在lib目录下面,文件名为小写的类名,或者建立一个目录。比如,新增一个image的类,可以存放在 lib/image.class.php,也可以存放在lib/image/image.class.php

这样,通过上面的扩展机制,无论是企业内部的修改(配置文件的修改,语言文件的修改,或者自己对现有逻辑的修改),还是第三方的扩展,都可以完美的并存。并且不用担心禅道核心代码升级的问题。



禅道项目管理软件扩展机制简介_第1张图片

你可能感兴趣的:(PHP,框架,mvc,配置管理,项目管理)