zoukankan      html  css  js  c++  java
  • hdwiki 框架简介

    虽然HDwiki是一个开源的wiki系统,并且代码简洁易懂,但如果想在系统上做做进一步开发还需要对框架有一个整体的认识。熟悉了HDwiki的框架以后完全可以独立出来做其他功能的开发,当做一个开源的PHP框架来使用。

    概要介绍
    1. 基于 MVC 体系
    2 支持PHP4和PHP5
    3. 超轻量级
    4. 使用便捷的模版系统
    5. 缓存机制
    6.支持插件开发
    7. 丰富的lib类库包

    程序执行流程
      
    系统流程图如下:
    hdwiki框架简介

    hdwiki框架简介hdwiki框架简介

    HDwiki框架简介-程序执行流程,从开始的index.php文件通过几个重要的文件概要看一下流程。
    index.php文件实现了如下功能
    1. 设置错误级别
    2. 关掉魔法引用(数据库,文件过来的数据)
    3. $starttime开始了,设置程序运行时间。
    4. IN_HDwiki和HDwiki_ROOT常量定义
    5. 包含一个文件 '/model/HDwiki.class.php'
    6. 实例化一个对象然后运行。model/HDwiki.class.php
    7. 得到MAGIC_QUOTES_GPC的值
    包含三个文件,config.php(本系统的基本信息数据库信息、编码等)
                        string.class.php(类库中,对字符串的处理)
                        base.class.php(系统的基础类,重点)
    然后就是HDwiki类,构造函数执行了init_request(), load_control()两个方法,实现了如下功能:

    init_request():
    1. 判断系统是否已经安装 得到url$_SERVER['QUERY_STRING']
    2. 把刚才得到的url进行相应的分析处理得到类名,方法名和参数,设定默认的类名,方法名。
    3. 把PHP的几个全局变量($GLOBALS, $_ENV, $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS, $HTTP_SERVER_VARS, $HTTP_ENV_VARS)用unset释放掉将post、get放到本类的属性中。

    load_control():
    1. 将上一个方法得到的get、post进一步分析,包含对应的文件。
    run()
    index.php用到的方法,实例刚才的包含的类,运行相应的方法。
    根据url运行control里面的类的方法,此方法又调用了相应的model方法做了对数据的处理。
    control方法完成变量和数据的处理后,就通过template类把模版编译进来,统一显示给用户。

    base.class.php文件简介
    上来就是包含了一堆文件
    require HDwiki_ROOT.'/version.php';
    require HDwiki_ROOT.'/lib/file.class.php';
    require HDwiki_ROOT.'/lib/util.class.php';
    require HDwiki_ROOT.'/lib/hddb.class.php';
    require HDwiki_ROOT.'/lib/template.class.php';
    require HDwiki_ROOT.'/lib/cache.class.php';

    本类文件是重点的一个文件类系统中所有的cotrol类都集成了这个类,初始化了所有的系统中使用得到属性和方法。包括,访问的ip、访问时间、初始化用户、数据库操作对象、缓存操作对象、插件列表、模版操作对象等。
    并不难理解。
    到此关于框架的几个重点文件就都看到了。关于如何初始化数据库,如何初始化模版对象,自己可以看看相应的文件也都很容易理解。
    更多可参考HDwiki运行机制和原理一文。

  • 相关阅读:
    用js添加网页标题时,在QQ里无效,标题栏空白
    用css3的@keyframes里设置transform:rotate(); 当控制动画暂停:animation-play-state:paused暂停,在微信和safari里无效
    Python可变序列中的一些坑,记得多注意
    你知道?Python 中的序列类型支持哪些公共操作吗?
    用 python print() 函数实现的三个特效
    教你使用python生成器重构提取数据方法,来优化你的爬虫代码
    python中主线程与子线程的结束顺序,你知道吗?
    python装饰器实现对异常代码出现进行自动监控
    Python教程:高效率遍历文件夹寻找重复文件
    python教程: filter()和reduce()函数用法详解
  • 原文地址:https://www.cnblogs.com/camelroyu/p/5642853.html
Copyright © 2011-2022 走看看