本人目前刚刚PHP入门,之前一直都是写Disucz模板,今天看到一些文章就来记录下Discuz x2 源码分析的分享。

就说home.php吧,先是加载discuz程序框架:

1
2
require_once './source/class/class_core.php';
require_once './source/function/function_home.php';

Discuz X2 源码采用重新编写的 MVC 框架。

1
2
3
4
5
6
7
8
9
10
11
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");
    }
}

第一句话

1
require_once libfile('home/'.$mod, 'module');

加载source文件夹下module文件夹里面的home下的home_$mod.php

执行数据库查询

1
2
3
4
5
$friendlist = array();
        $query = DB::query("SELECT * FROM ".DB::table('home_friend')." WHERE uid='$space[uid]'");
        while ($value = DB::fetch($query)) {
            $friendlist[$value['fuid']] = 1;
        }

O了,就是这样一个过程,学习的过程就是对源码的分析过程,多看多想就会慢慢明白。