好,接着说怎么引入配置文件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()这行代码,到底初始化了哪些东西?

且听下回分解。

标签: Typecho, 源码分析

添加新评论