Typecho源码分析(3)
好,接着说怎么引入配置文件config.inc.php
。
这个文件是执行安装过程中,由程序生成的。所以有很多时候,安装会报错的一个原因,就是没有写入权限。
好,接下来,看这个配置文件干了什么。
首先是定义了一些全局变量,尤其是一些文件路径。比如:
/** 定义根目录 */
define('__TYPECHO_ROOT_DIR__', dirname(__FILE__));
/** 定义插件目录(相对路径) */
define('__TYPECHO_PLUGIN_DIR__', '/usr/plugins');
/** 定义模板目录(相对路径) */
define('__TYPECHO_THEME_DIR__', '/usr/themes');
/** 后台路径(相对路径) */
define('__TYPECHO_ADMIN_DIR__', '/admin/');
然后,再依据这些已经定义好的路径,来引入相应的文件(依赖),尤其是最关键的一个:
/** 载入API支持 */
require_once 'Typecho/Common.php';
/** 程序初始化 */
Typecho_Common::init();
初始化之后,会连接数据库。
那么,接下来有2个问题:
- 根目录下,也没有
Typecho
这个目录啊,怎么引入的呢? Typecho_Common::init()
这行代码,到底初始化了哪些东西?
第一个问题,其实就是要看一个函数:
/** 设置包含路径 */
@set_include_path(get_include_path() . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . '/var' . PATH_SEPARATOR .
__TYPECHO_ROOT_DIR__ . __TYPECHO_PLUGIN_DIR__);
这个set_include_path
到底是干啥的?
其实就是设置一些预定义的路径,用冒号分开(:
,或者就是PATH_SEPARATOR
),然后在require的时候,会依次在这些路径里寻找文件。有点类似Linux
里的PATH
环境变量。
所以其实最后就在'/var/Typecho'里找到了这个common.php
。
好,第二个问题,Typecho_Common::init()
这行代码,到底初始化了哪些东西?
且听下回分解。