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是重点,下次得重点分析了。

今天就到这吧,鸟儿的~太乱了,一点章法都没有

转载于:https://www.cnblogs.com/ronghua/p/5935820.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea快捷操作_IDEA插件系列 快捷键神器!Key Promoter X

今天起,会陆续给大家介绍一些IDEA的插件。正所谓工欲善其事必先利其器,一款好的插件可以帮我们提升开发效率,或者提升使用IDEA的幸福感!今天要推荐的第一款插件 Key Promoter X 。相信很多新手甚至老手,对IDEA中的快捷…

《开讲啦》 20160910 颜宁:女科学家去哪儿了?

视频地址: 《开讲啦》 20160910 颜宁:女科学家去哪儿了? 果然是女神科学家,讲了一些我很感兴趣的东西,让我也体会到了女神的气质,有点感触,这个节目不错,可以追。 颜宁教授于2016年5…

if __name__ == __main__:什么意思_秒懂Python编程中的if __name__ == 'main' 的作用和原理...

来源:菜鸟分析 链接:https://zhuanlan.zhihu.com/p/34112508一天偶然发现知乎上有篇关于对python编程中的if __name__ main的理解陈述,看完之后,自己觉得不够简单明了,于是在其文章底部写了一句话,突然收获…

4.openstack之mitaka搭建glance镜像服务

部署镜像服务 一:安装和配置服务 1.建库建用户 mysql -u root -p CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO glancelocalhost IDENTIFIED BY 密码; GRANT ALL PRIVILEGES ON glance.* TO glance% IDENTIFIED BY 密码; flush privileges; 2.keys…

mysql php 变量赋值,在MySQL UPDATE(PHP / MySQL)中使用变量

I am using this code so I can update a record in database:$query mysql_query("UPDATE articleSET com_count ". $comments_countWHERE article_id .$art_id ");My question is: How can I use variables in a MySQL UPDATE statement.解决方案$query m…

mongodb 教程一

mongodb是nosql(not only sql)的一种方式 。是对不同于传统的关系型数据库的数据库管理系统的统称。 NoSQL - 代表着不仅仅是SQL- 没有声明性查询语言- 没有预定义的模式-键 - 值对存储,列存储,文档存储,图形数据库- 最…

java mysql 回滚_Java 中对数据库操作时的 回滚

Connection connnull;conn.rollback()就可以回滚//用jdbc连接数据库//举例子,比如你在写一个级联删除的方法的时候,为了保证数据完整性,删除的时候一定要确定该删的都删了才行,否则就要回滚,下面是删除方法的例子&…

向文件中追加内容

#echo abcbedf>>a.txt 将abcdef追加到a.txt文件末尾 往文件中写入内容,比如原来的a.txt文件内容是aaaaa, #echo bbbbb>a.txt,这个是bbbbb把a.txt原来的内容替换 这里注意 >是覆盖,>>是追加。 如果为多行输入,需…

kali linux改中文_【亲测实验】kali linux 2020 设置为中文方法

kali 2020.1可用进入我们的正题,修改为中文的步骤1.更换更新源打开终端,输入下边命令打开更新源的文件vim /etc/apt/sources.list在文件结尾加入下边更新源#中科大deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free contribdeb-src http:…

php取整函数ceil,floor,round,intval函数的区别

1、ceil — 进一法取整说明float ceil ( float $value )返回不小于 value 的下一个整数&#xff0c;value 如果有小数部分则进一位。ceil() 返回的类型仍然是 float&#xff0c;因为 float 值的范围通常比 integer 要大。ceil() 例子 <?php echo ceil(4.3); // 5 echo ceil…

mysql的源码目录_Mysql DBA系统学习(2)了解mysql的源码目录及源文件

了解mysql的源码目录包括客户端代码&#xff0c;服务端代码&#xff0c;测试工具和其他库文件Bdb 伯克利DB表引擎BUILD 构建工程的脚本Client 客户端Cmd-line-utils 命令行工具Config 构建工程所需的一些文件Dbug Fred Fish的调试库Docs 文档文件夹Extra 一些相对独立的次要的工…

开始我的blog之旅

这是我第一次开始写blog的时刻&#xff0c;我也想好了怎么开始&#xff0c;鉴于我喜欢刨根问底的原则&#xff0c;我决定要翻开C语言&#xff0c;重新复习。同时以写blog的形式来印证。 写作路线嘛&#xff0c;就按照《C Primer Plus》第五版的章节套路来&#xff0c;中间在参杂…

ubuntu 破解mysql密码_Ubuntu下忘记MySQL root密码解决方法

Linux下忘记MySQL root密码解决方法忘了mysql密码&#xff0c;从网上找到的解决方案记录在这里。编辑mysql的配置文件/etc/mysql/my.cnf&#xff0c;在[mysqld]段下加入一行“skip-grant-tables”121201191255521.png重启mysql服务ubuntu:~$ sudo service mysql restartmysql s…

面向对象编程其实很简单——Python 面向对象(初级篇)

在Python教学中发现&#xff0c;很多同学在走到面向对象编程这块就开始蒙圈了&#xff0c;为了帮助大家更好的理解面向对象编程并其能将其用到自己的开发过程中&#xff0c;特写此文。 概述 面向过程&#xff1a;根据业务逻辑从上到下写垒代码 函数式&#xff1a;将某功能代码…

nginx mysql双机热备_MYSQL双机热备

mysql从3.23.15版本以后提供数据库复制功能。利用该功能可以实现两个数据库同步&#xff0c;主从模式&#xff0c;互相备份模式的功能&#xff0c;该功能可将一个数据库的工作量分摊于多个Mysql服务器之上&#xff0c;但考虑到种种因素&#xff0c;不要使用过多的同步服务器。最…

Code 0001: Wait rx completed

注意&#xff1a;以下Demo适用于不带DMA功能的串口。 Demo0001 /* 方法&#xff1a; wait_rx函数每1ms扫描串口是否有接受数据&#xff0c;如果长时间没有收到数据&#xff0c;则接受完成。 * 分析&#xff1a; 该方法存在的问题是扫描时间需要配合串口波特率进行设置&#xff…

windwos cakephp mysql apache_配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境

1. 安装配置apahce安装配置apache是比较简单的&#xff0c; 跟着安装向导一步步往下走就能搞定。最多就是在配置端口的地方需要注意一下&#xff0c;如果已经安装了其它web服务器占用了80端口&#xff0c;那记得配置的时候选一个别的端口。向导中忘了设置&#xff0c;在apache的…

python 单链表是否有回路_第5章 第1节 链表

● 请你说出几种基本的数据结构&#xff0c;参考回答&#xff1a;常见的基本的数据结构有链表、栈、队列、树(只列出面试常考的基本数据结构)1、链表是一种物理存储单元上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系…

linux下如何使用sftp命令【转】

linux下如何使用sftp命令 from&#xff1a; http://www.cnblogs.com/chen1987lei/archive/2010/11/26/1888391.htmlsftp 是一个交互式文件传输程式。它类似于 ftp, 但它进行加密传输&#xff0c;比FTP有更高的安全性。下边就简单介绍一下如何远程连接主机&#xff0c;进行文件…

netbean下搭建mariadb数据库

本人的操作系统Manjaro 最新版&#xff0c;mariadb版本为10.1.1&#xff0c;使用netbeasn开发java WEB&#xff0c;搭建过程如下&#xff1a; 1、安装数据库 pacman -S mariadb 2、启动数据库服务&#xff1a; systemctl start mariadb(启动) systemctl stop mariadb(关闭) 3、…