dedecms代码详解(2)

现在继续,今天讲的主要是dedecms的入口代码。

 

先打开index.php看看里面是什么吧。打开根目录下的index.php嗯,映入眼帘的是一个if语句。

检查/data/common.inc.php是否存在。如果不存在就跳转到安装界面。

 

我们来到/data/看看这个目录和common.inc.php。

打开/data/,里面很多目录和文件,有上传的临时目录,模板缓存,压缩的临时目录,各种数据库里保存的系统配置信息的缓存文件以及其他的一些东西,就一个字乱~

好吧,我们打开common.inc.php。哦,原来就是保存了数据库连接的相关变量而已。说白了,就是dedecms的数据库连接配置文件,估计是安装完系统生成的。所以/index.php会检查它是否存在。

 

我们回到/index.php中继续往下看,第二个if语句,判断GET请求“upcache”是否存在,存在就更新首页缓存,不存在就直接301跳转到index.html,也就是dedecms的静态首页(记住,dedecms的前台页面都是系统生成的静态页面)。

 

想想接下来我们要研究什么?对,就是GET请求“upcache”存在的时候,更新首页缓存这小段代码啦。代码如下:

require_once (dirname(__FILE__) . "/include/common.inc.php");

require_once DEDEINC."/arc.partview.class.php";

$GLOBALS['_arclistEnv'] = 'index';

$row = $dsql->GetOne("Select * From `#@__homepageset`");

$row['templet'] = MfTemplet($row['templet']);

$pv = new PartView();

$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row['templet']);

$pv->SaveToHtml(dirname(__FILE__).'/index.html');

include(dirname(__FILE__).'/index.html');

exit();

 

先是加载/include/common.inc.php,估计是一些常用函数和加载其他系统函数和类的文件。

接下来又加载了DEDEINC."/arc.partview.class.php",注意DEDEINC这个常量,我们知道经过前期对dedecms目录结构观察,arc.partview.class.php是在/include目录下的,而加载/include/common.inc.php却没有用DEDEINC这个常量,这说明,common.inc.php里面定义了DEDEINC这个常量,所以后面得以使用,也印证了common.inc.php大体作用就是系统运行基本部分,都在这里面啦。我们不急着进common.inc.php,继续把index.php的更新缓存代码看完。

第三句,设置了一个全局变量:$GLOBALS['_arclistEnv'] = 'index';

第四行,获取一个表'#@__homepageset'的所有记录,当然如果你看下数据库,里面没有“#@__homepageset”这个表,我们判断,是数据库操作相关函数把表名用表名前缀替换了一下前半部分,这个都不重要了,重要的是,通过这句,获取了首页的相关配置信息,我们打开数据库里面的dede_homepageset表,晕,就一条记录,俩字段,基本猜到了,一个是首页模板名称,一个是生成的静态文件的位置。

回来继续分析前面的代码

$row['templet'] = MfTemplet($row['templet']);

通过MfTemplet函数好像把$row['templet']进行了某些转换。我们记下MfTemplet函数,以待后面挖掘。

接下来,就是new了一个PartView类,看这个名字,我们就知道了前面加载arc.partview.class.php的作用啦。

至于这个PartView类有什么作用,我们继续看代码。看了下面两行,我想大家应该都明白啦

$pv->SetTemplet($cfg_basedir . $cfg_templets_dir . "/" . $row['templet']);

$pv->SaveToHtml(dirname(__FILE__).'/index.html');

创建个视图对象(PartView类的实例,我们姑且叫视图对象),设置模板,通过SaveToHtml方法,把最后生成的页面写到指定位置。

首页生成完毕,接下来就是把生成的静态文件通过include的形式显示出来,然后exit中断页面解析。

 

至此,/index.php就分析完啦。

它先是通过/data/common.inc.php,判断是否安装了dedecms或者说判断是否定义了数据库配置信息,好为后面操作打下基础。

然后判断是否有GET请求"upcache",如果有就加载/include/common.inc.php初始化系统,然后调用partview类的相关方法来生成静态首页文件,最后显示出来。

 

这么来看dedecms也没有太多的秘密嘛~

 

不过呢,我们这篇文章也遗留下了几个问题:

1)加载了/include/common.inc.php,里面做了哪些工作?

2)/include/arc.partview.class.php到底是干什么的,/include/下还有很多arc开头的文件都是干什么的?

3)MfTemplet这个函数到底对模板文件路径这个字符串做了什么操作?

4)partview类的相关方法都有什么秘密?


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值