本学习笔记是针对记事狗微博3.6.6版本的开源代码的简单分析。转载请注明来自:外链网址已屏蔽blog.okbase.net/phpchina
下面是对微博首页话题列表的分析。
(1)页面/index.php?mod=topic&code=new
模板位于/templates/default/topic_new.html
24行 function listTopic( s,lh ) {
31行 var myAjax = $.post(
"ajax.php?mod=topic&code=list",
内容还是通过ajax动态加载的
(2)加载对应的模块
/include/jishigou.php
59行 加载模块文件 @include_once $modules_path . ($this->_init_mod($types[$type])) . '.mod.php'
83行 $ModuleObject = new ModuleObject($this->var['config']);
(3)模块中根据code功能,执行对应的函数,调用逻辑层的代码
/modules/ajax/topic.mod.php
33行 ModuleObject构造函数中 $this->Execute();
37行 function Execute()
233行 $this->DoList();
604行 调用逻辑层代码获得微博列表 $info = Load::logic('topic_list', 1)->get_data($options);
(4)逻辑层的处理
/include/logic/topic_list.logic.php
218行 获取记录数 $total_record = DB::result_first($sql);
select count(*) from jishigou_topic WHERE 1 AND type IN('first','forward','both')
268行 $topic_list = $this->TopicLogic->Get($condition, $fields, $proc_func, $table);
/include/logic/topic.logic.php
1171行 取得微博话题列表 $query = $this->DatabaseHandler->Query($sql);
1207行 为话题列表取得更多的信息 function MakeAll(
1255行 $query = DB::query($sql); 取得用户详情
1272行 取得视频列表
1286行 取得音乐列表
此部分SQL:
select count(*) from jishigou_topic WHERE 1
select * from jishigou_topic WHERE 1 ORDER BY dateline DESC LIMIT 0,20
SELECT M.`uid`, M.`ucuid`, M.`username`, M.`nickname`, M.`signature`, M.`face_url`, M.`face`, M.`validate`, M.`validate_category`, M.`level`, MF.validate_true_name, MF.validate_remark FROM jishigou_members M LEFT JOIN jishigou_memberfields MF ON MF.uid = M.uid WHERE M.uid IN('1','2')
select * from jishigou_topic where `tid` in ('2','1') // 这是为了取得转发源话题
SELECT M.`uid`, M.`ucuid`, M.`username`, M.`nickname`, M.`signature`, M.`face_url`, M.`face`, M.`validate`, M.`validate_category`, M.`level`, MF.validate_true_name, MF.validate_remark FROM jishigou_members M LEFT JOIN jishigou_memberfields MF ON MF.uid = M.uid WHERE M.uid IN('2')