您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源Bug管理工具 > Mantis
Mantis解析
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/2/7 16:38:00 ] 推薦標(biāo)簽:Mantis 缺陷管理

(三)Mantis的結(jié)構(gòu)分析

其實(shí)這個(gè)應(yīng)該放到后的,因?yàn)樾薷暮螅虐l(fā)現(xiàn)很多的東西,Mantis都已經(jīng)想到了,東西都在代碼中,而不是在頁(yè)面配置里面,所以很多時(shí)候,想要的功能,直接修改源碼參數(shù)即可。等到(四)的時(shí)候,大家可以具體的了解其中的內(nèi)容了,此節(jié)僅僅對(duì)Mantis的結(jié)構(gòu)進(jìn)行說(shuō)明。

我本人不是開(kāi)發(fā)出身,原先也不了解php,都是此次因?yàn)樾枰褂,才現(xiàn)看的php內(nèi)容,好在不是需要開(kāi)發(fā)一個(gè)沒(méi)有的系統(tǒng),而是在一個(gè)現(xiàn)有的體系下找到其中的節(jié)點(diǎn)和關(guān)鍵,這個(gè)方便多了,所以下面的內(nèi)容,僅僅代表本人的一些看法,可能有不對(duì)的地方,大家可以隨時(shí)指出,謝謝。

Mantis的目錄很多,但是關(guān)鍵的目錄目錄只有一個(gè),是core目錄,當(dāng)然了,因?yàn)闈h化的緣故,lang目錄的strings_chinese_simplified.txt,也是我們關(guān)心的內(nèi)容。還有是根目錄下面的各個(gè)php文件。

其實(shí)感覺(jué)Mantis的結(jié)構(gòu)安排不盡合理,php目錄下面的大部分內(nèi)容,都應(yīng)該放置到一個(gè)專門的目錄,因?yàn)槎际且恍┕δ茼?yè)面文件。而用戶定義的內(nèi)容,比如config_inc.php,應(yīng)該放置在根目錄或者專門的配置目錄中,現(xiàn)在的安排顯得很混亂,主次不清。

如果看過(guò)Mantis的源碼,會(huì)發(fā)現(xiàn)很多php中都首先引入require_once( 'core.php' );core.php是我們第一個(gè)需要分析的文件,把此文件分析完,Mantis什么樣子,我們也知道了。

(四)core.php到底做了什么

下面的分析,我沒(méi)有解釋全部代碼,只是挑選主要的說(shuō)明Mantis都在后面做了哪些魔法,感興趣的可以直接去看完整的代碼。

 

1.     constant_inc.php

45行:require_once( dirname( __FILE__ ).DIRECTORY_SEPARATOR.'core'.DIRECTORY_SEPARATOR.'constant_inc.php' );

這個(gè)是Mantis中定義的常量,在各種函數(shù)中,調(diào)用的很多不是硬編碼,而是對(duì)應(yīng)的常量數(shù)值。

在50,51行的

if ( file_exists( dirname( __FILE__ ).DIRECTORY_SEPARATOR.'custom_constants_inc.php' ) ) {

      require_once( dirname( __FILE__ ).DIRECTORY_SEPARATOR.'custom_constants_inc.php' );}

這個(gè)是如果你需要定義自己的常量,請(qǐng)?jiān)诟夸浵旅嫘陆╟ustom_constants_inc.php文件,把自己定義的常量定義到此文件中。按照基本的原則,沒(méi)有必要,不要修改Mantis中原有的文件,Mantis本身已經(jīng)給你留下了自定義的接口文件,此custom_constants_inc.php文件是。

下面還有很多類似的情況,有一個(gè)缺省的Mantis配置文件,有一個(gè)對(duì)應(yīng)的用戶自定義文件。

2. config_defaults_inc.php

62行:require_once( dirname( __FILE__ ).DIRECTORY_SEPARATOR.'config_defaults_inc.php' );

config_defaults_inc.php是Mantis系統(tǒng)默認(rèn)的各種參數(shù)。此文件和下面config_inc.php是同樣作用的文件,但是config_defaults_inc.php是系統(tǒng)預(yù)設(shè)的,config_inc.php是用戶自己定義的。

3. config_inc.php

64-67行

# config_inc may not be present if this is a new install

if ( file_exists( dirname( __FILE__ ).DIRECTORY_SEPARATOR.'config_inc.php' ) ) {

      require_once( dirname( __FILE__ ).DIRECTORY_SEPARATOR.'config_inc.php' );

      $t_config_inc_found = true;}

安裝或升級(jí)Mantis的時(shí)候,自動(dòng)把數(shù)據(jù)庫(kù)等信息寫到此constant_inc.php文件中。如果需要自己定義一些參數(shù),也都是在此文件中寫入,可以寫入的參數(shù)參考doc目錄內(nèi)administration_guide.pdf的Chapter 5. Configuration章節(jié)。在根目錄的config_inc.php.sample文件內(nèi)也有一些相關(guān)的示例?傊,自己需要定義的參數(shù),在config_inc.php中實(shí)現(xiàn)。

如果config_inc.php和config_defaults_inc.php參數(shù)有重復(fù)的情況,以config_inc.php中定義的為準(zhǔn)。

4. custom_function_api.php

244行:

require_once( 'custom_function_api.php' );

用戶自定義的函數(shù),請(qǐng)加入到此文件中,缺省沒(méi)有此文件,需要的時(shí)候自己建立。

5.其他

Core.php里面還定義了很多內(nèi)容,比如載入core目錄下面的各種api文件,定義時(shí)區(qū),出否加載wiki等,但是主要的,還是上面的幾個(gè)文件。

總結(jié),core.php主要加載Mantis使用的資源和庫(kù)文件,不妨當(dāng)成缺省的命名空間,而且預(yù)留了用戶的接口,主要是變量config_inc.php、常量custom_constants_inc.php、函數(shù)custom_function_api.php,后兩個(gè)文件缺省沒(méi)有,需要的時(shí)候由用戶手工建立。在自己定義或開(kāi)發(fā)的過(guò)程中,不要修改Mantis的原文件,都使用此三個(gè)文件即可。

具體的示例,參考doc目錄內(nèi)administration_guide.pdf的Chapter 7. Customizing MantisBT。

上一頁(yè)12下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd