Discuz! X2 源码分析
受客户委托改 Discuz! X2 以下简称 x2 个人空间模板,由于原来没有改过,网上资料又很少。决定分析一下源码,下面是随笔记录。
请求地址 /home.php
主要是加载 dz程序框架。
require_once './source/class/class_core.php';
require_once './source/function/function_home.php';
X2 采用重新编写的 MVC 框架。
require_once libfile('home/'.$mod, 'module');
libfile() 函数位于 /source/function/function_core.php
function libfile($libname, $folder = '') {
$libpath = DISCUZ_ROOT.'/source/'.$folder;
if(strstr($libname, '/')) {
list($pre, $name) = explode('/', $libname);
return realpath("{$libpath}/{$pre}/{$pre}_{$name}.php");
} else {
return realpath("{$libpath}/{$libname}.php");
}
}
就是加载 source 下面的文件
require_once libfile('home/'.$mod, 'module');
就是加载 source 下面 module 下的 home 下 home_$mod.php
执行数据库查询
$friendlist = array();
$query = DB::query("SELECT * FROM ".DB::table('home_friend')." WHERE uid='$space[uid]'");
while ($value = DB::fetch($query)) {
$friendlist[$value['fuid']] = 1;
}
里面是一大堆的查询。X2 代码感觉写的不咋得,还不如 ECSHOP 起码代码明了可读性强。