(四)core.php到底做了什么
下面的分析,我没有解释全部代码,只是挑选主要的说明Mantis都在后面做了哪些魔法,感兴趣的可以直接去看完整的代码。
1. constant_inc.php
45行:require_once( dirname(
__FILE__ ).DIRECTORY_SEPARATOR.'core'.DIRECTORY_SEPARATOR.'constant_inc.php' );
这个是Mantis中定义的常量,在各种函数中,调用的很多不是硬编码,而是对应的常量数值。
在50,51行的
if ( file_exists( dirname( __FILE__ ).DIRECTORY_SEPARATOR.'custom_constants_inc.php'
) ) {
require_once( dirname(
__FILE__ ).DIRECTORY_SEPARATOR.'custom_constants_inc.php' );}
这个是如果你需要定义自己的常量,请在根目录下面新建custom_constants_inc.php文件,把自己定义的常量定义到此文件中。按照基本的原则,没有绝对必要,不要修改Mantis中原有的文件,Mantis本身已经给你留下了自定义的接口文件,此custom_constants_inc.php文件就是。
下面还有很多类似的情况,有一个缺省的Mantis配置文件,就有一个对应的用户自定义文件。
2.
config_defaults_inc.php
62行:require_once( dirname(
__FILE__ ).DIRECTORY_SEPARATOR.'config_defaults_inc.php' );
config_defaults_inc.php是Mantis系统默认的各种参数。此文件和下面config_inc.php是同样作用的文件,但是config_defaults_inc.php是系统预设的,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;}
安装或升级Mantis的时候,自动把数据库等信息写到此constant_inc.php文件中。如果需要自己定义一些参数,也都是在此文件中写入,可以写入的参数参考doc目录内administration_guide.pdf的Chapter 5. Configuration章节。在根目录的config_inc.php.sample文件内也有一些相关的示例。总之,自己需要定义的参数,就在config_inc.php中实现。
如果config_inc.php和config_defaults_inc.php参数有重复的情况,以config_inc.php中定义的为准。
4.
custom_function_api.php
244行:
require_once(
'custom_function_api.php' );
用户自定义的函数,请加入到此文件中,缺省没有此文件,需要的时候自己建立。
5.其他
Core.php里面还定义了很多内容,比如载入core目录下面的各种api文件,定义时区,出否加载wiki等,但是主要的,还是上面的几个文件。
总结,core.php主要加载Mantis使用的资源和库文件,不妨当成缺省的命名空间,而且预留了用户的接口,主要就是变量config_inc.php、常量custom_constants_inc.php、函数custom_function_api.php,后两个文件缺省没有,需要的时候由用户手工建立。在自己定义或开发的过程中,不要修改Mantis的原文件,都使用此三个文件即可。
具体的示例,参考doc目录内administration_guide.pdf的Chapter 7. Customizing MantisBT。