dedecms代码研究三
上次,我们从dedecms的index.PHP文件中了解到了很多信息,也提出了一些问题:
1)加载了/include/common.inc.php,里面做了哪些工作? 2)/include/arc.partview.class.php到底是干什么的,/include/下还有很多arc开头的文件都是干什么的? 3)MfTemplet这个函数到底对模板文件路径这个字符串做了什么操作? 4)partview类的相关方法都有什么秘密?
本文开始就带着前面的问题,继续我们的dedecms之旅吧。
我们就先来看看common.inc.php里面都有什么吧
//error_reporting(E_ALL);
error_reporting(E_ALL || ~E_NOTICE);
define('DEDEINC', str_replace("\\", '/', dirname(__FILE__) ) );
define('DEDEROOT', str_replace("\\", '/', substr(DEDEINC,0,-8) ) );
define('DEDEDATA', DEDEROOT.'/data');
define('DEDEMEMBER', DEDEROOT.'/member');
define('DEDETEMPLATE', DEDEROOT.'/templets');
。。。。。。。。。。。。。。。。。。。。。。
define('DEDEMODEL', './model');
define('DEDECONTROL', './control');
define('DEDEAPPTPL', './templates'); //系统配置参数
require_once(DEDEDATA."/config.cache.inc.php"); //数据库配置文件
require_once(DEDEDATA.'/common.inc.php');
打开/include/common.inc.php里面的注释已经说地比较清楚了。我们大概说说结构。
先是定义一堆常量。然后是做一些安全措施,对PHP的系统环境进行一些设置,代码里面的注释已经写地很清楚了。
接下来是把dedecms的系统配置参数文件包含进来:require_once(DEDEDATA."/config.cache.inc.php");
看文件名字,我们猜测这个配置文件可能是数据库里面的配置信息的缓存。
接下来加载了数据库配置信息文件:require_once(DEDEDATA.'/common.inc.php');
这个文件,不是根据数据库中信息生成的缓存,而是dedecms安装的时候生成的。前一篇文章我们说过index.php文件开始,检测dedecms是否安装,就是看这个文件是否存在的。
再接下来,整理了很多目录,比如:站点根目录、模板目录,插件目录、数据目录等,还整理了很多变量。最后加载了数据库操作类dedesql.class.php和常用函数文件common.func.php
嗯,common.inc.php的谜底揭开,里面没什么好玩的东西啦,都是最基本的东西。
接下来我们就得看看arc.partview.class.php吧,这里面可是dedecms关键呢
加载了channelunit.class.php,typelink.class.php,ftp.class.php
下面就是partview类的定义啦
因为index.php中使用partview类的SetTemplet方法和SaveToHtml方法,所以,我们为了能更简单地深入,就从这两个方法着手。
我们先看看partview的构造函数。
创建了一个DedeTagParse类的实例,看名字是标签解析类哦。然后设置了几个参数。
接下来,new了一个TypeLink类,设置了一堆参数。搞的很云里雾里的。
一、看看SetTemplet吧。啊,这个还算简单。
① 使用DedeTagParse类的LoadTemplet方法载入模板。
② 设置一些Fields数组的元素
③ 调用ParseTemplet方法。
ParseTemplet方法里面弄了一堆$GLOBALS数组的元素,然后调用了MakeOneTag函数。费解啊
二、再看看SaveToHtml方法吧
前面就是建目录,最后用DedeTagParse的SaveTo方法保存到文件。
呃~不给力啊。
只能回头想想,都看到了什么~
嗯,为了能生成首页,搞了个很搞不懂的partview类,然后里面调用了貌似万能的DedeTagParse方法,解析模板,生成静态文件。
仅此而已。
里面还夹杂了其他函数和类,但不管怎么样这个DedeTagParse是重点,下次得重点分析了。
今天就到这吧,鸟儿的~太乱了,一点章法都没有
dedecms代码研究三的更多相关文章
- dedecms代码研究二
dedecms代码研究(2)从index开始现在继续,今天讲的主要是dedecms的入口代码.先打开index.PHP看看里面是什么吧.打开根目录下的index.php嗯映入眼帘的是一个if语句.检查 ...
- dedecms代码研究七
简单回顾一下,前面我们首页动态文件index.PHP调用arc.partview.class.php来初始化首页模板 arc.partview.class.php通过SetTemplet调用DedeT ...
- dedecms代码研究六
今天讲的是dedecms最关键的东西,模板分析啦.也就是dedetag.class.php 里面的ParseTemplet方法 模板解析方法 先看看一个dedecms标签,大家心里有个数: {dede ...
- dedecms代码研究五
上一次留几个疑问: 1)DedeTagParse类LoadTemplet方法. 2)MakeOneTag到底在搞什么. 从DedeTagParse开始前面,我们一直在dedecms的外围,被各种全局变 ...
- dedecms代码研究四
partview php文件之前,我们像掉进沼泽一样,看到无尽的变量,数组元素,莫名其面的东西摆在我们面前.今天,我们继续艰难前行,想办法走出partview类的泥潭.上一篇,我们胡乱分析了partv ...
- dedecms代码研究一
dedecms相信大家一定都知道这个cms系统,功能比较强大,有比较完善的内容发布,还有内容静态化系统,还有就是它有自己独特的标签系统和模板系统.而模板系统也是其他cms系统比较难模仿的的东西,这个东 ...
- (转)dedecms代码详解 很全面
dedecms代码研究(1)开篇dedecms 相信大家一定都知道这个cms 系统,功能比较强大,有比较完善的内容发布,还有内容静态化系统,还有就是它有自己独特的标签系统和模板系统.而模板系统也是其他 ...
- dedecms代码详解 很全面
dedecms代码研究(1)开篇dedecms 相信大家一定都知道这个cms 系统,功能比较强大,有比较完善的内容发布,还有内容静态化系统,还有就是它有自己独特的标签系统和模板系统.而模板系统也是其他 ...
- 一段markdown编辑器代码研究
一段markdown编辑器代码研究 说明 代码在 https://github.com/dukeofharen/markdown-editor 之所以选择这个来分析是一方面是因为它的代码结构比较简单, ...
随机推荐
- springmvc学习第二天
一.pojo Spring mvc 会按请求参数名和pojo属性名进行自动匹配,自动为该对象填充属性值,并且支持级联属性 表单: <form action="springmvc/tes ...
- Python框架、库以及软件资源汇总
转自:http://developer.51cto.com/art/201507/483510.htm 很多来自世界各地的程序员不求回报的写代码为别人造轮子.贡献代码.开发框架.开放源代码使得分散在世 ...
- Oracle数据库初级学习 2
今天我们介绍Oracle数据库中剩余的查询方法,今天的查询方法会比昨天的更为复杂一些(PS:我也是个初学者,请见谅..). 一.分组函数 分组函数是为了区分同一个表中的不同数据而建立,其关键字为GRO ...
- tensorflow1
特征: 1 灵活 2 可移植性 3 和研究/生产联系 4 自动求导 5 语言选择:python,严谨的c++接口:未来扩展更多 6 最大性能化
- mysql常用&实用语句
Mysql是最流行的关系型数据库管理系统,也是目前最常用的数据库之一,掌握其常用的操作语句是必不可少的. 下面是自己总结的mysqp常用&实用的sql语句: 1.mysql -u root - ...
- 解决eclipse spring配置报错:cvc-elt.1: Cannot find the declaration of element
解决eclipse spring配置报错:cvc-elt.1: Cannot find the declaration of element 'beans'.Referenced file conta ...
- Java 设计一个贷款计算器 简易
import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.border.*; publi ...
- android setVisibility失效不起作用的问题
原因:不同的布局中有名字相同的控件,所以adapter中填充item的时候,由于控件名字相同没有正确识别你要显示的控件. 解决方法:给其中一个控件改一下名字就行了,超简单.
- maven 基本常识以及命令
Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令: 1. 创建Maven的普通 ...
- #import 跟 #include、@class 之间的区别
#include 是 C/C++ 导入头文件的关键字 是完整的包含某个文件的内容(包括该文件中被导入的文件) #import 是 OC 导入头文件的关键字 #import 指令是 OC 针对 #in ...