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

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

  • 相关阅读:
    什么是Sentinel?它能做什么
    【转】Sentinel 快速入门
    Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 解决
    【转】接口幂等性设计
    springboot1.5版本
    测试左移实践和总结
    测试左移和右移
    Linux-018-Centos Shell 判断软件是否已经安装
    PySe-018-Requests 解决响应乱码
    PySe-017-Requests 访问 HTTPS 网站安全告警信息(TLS Warnings / InsecureRequestWarning)处理
  • 原文地址:https://www.cnblogs.com/ronghua/p/5935820.html
Copyright © 2020-2023  润新知