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

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

程序执行流程
  
系统流程图如下:

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运行机制和原理一文。

hdwiki 框架简介的更多相关文章

  1. Spring 系列: Spring 框架简介 -7个部分

    Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级 ...

  2. 《HiWind企业快速开发框架实战》(0)目录及框架简介

    <HiWind企业快速开发框架实战>(0)目录及框架简介 本系列主要介绍一款企业管理系统快速开发框架,该框架旨在快速完成企业管理系统,并实现易维护可移植的目标. 使用逐个系统模块进行编码的 ...

  3. Yaf零基础学习总结1-Yaf框架简介

    从今天开始,给大家讲解下yaf框架,讲解之前肯定要了解下yaf是个什么东西,当然,从标题我们已经知道yaf是个PHP框架了,也许大家对于PHP框架并不陌生,一般PHP程序员用过的框架至少有一两个吧,国 ...

  4. Apache—DBUtils框架简介

    转载自:http://blog.csdn.net/fengdongkun/article/details/8236216 Apache—DBUtils框架简介.DbUtils类.QueryRunner ...

  5. Jersey框架一:Jersey RESTful WebService框架简介

    Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的 ...

  6. Web自动化框架LazyUI使用手册(1)--框架简介

    作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...

  7. python运维开发(二十二)---JSONP、瀑布流、组合搜索、多级评论、tornado框架简介

    内容目录: JSONP应用 瀑布流布局 组合搜索 多级评论 tornado框架简介 JSONP应用 由于浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. ...

  8. Spring 系列: Spring 框架简介(转载)

    Spring 系列: Spring 框架简介 http://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring AOP 和 IOC 容器入门 在 ...

  9. 依赖注入及AOP简述(四)——“好莱坞原则”和依赖注入框架简介 .

    3.2.    “好莱坞原则” 看了前面关于依赖注入概念的描述,我们来提炼出依赖注入的核心思想.如果说传统的组件间耦合方式,例如new.工厂模式等,是一种由开发者主动去构建依赖对象的话,那么依赖注入模 ...

随机推荐

  1. sqlplus登陆

    cd \sqlplus sys@test_id as sysdba 切换用户SQL> connect system@test_id

  2. python MySQLdb中文乱码

    Python操作MySQL需要安装Python-MySQL可以从网上搜索一下,和一般的Python包一样安装 安装好之后,模块名字叫做MySQLdb ,在Window和Linux环境下都可以使用,试验 ...

  3. MySQL复制-设置延迟复制

    mysql> stop slave ; Query OK, 0 rows affected (0.00 sec) mysql> change master to master_delay= ...

  4. fetch the words from url

    python code: import time,urllib fid=open('Friedrich Nietzsche Classic Words.txt','w') #1st ss='http: ...

  5. WebService之Axis2(4):二进制文件传输

    在<WebService大讲堂之Axis2(2):复合类型数据的传递>中讲过,如果要传递二进制文件(如图像.音频文件等),可以使用byte[]作为数据类型进行传递,然后客户端使用RPC方式 ...

  6. 转:python webdriver API 之 获取对象的属性

    获取测试对象的属性能够帮我们更好的进行对象的定位.比如页面上有很多标签为 input 元素,而我们需要定位其中 1 个有具有 data-node 属性不一样的元素.由于 webdriver 是不支持直 ...

  7. [原创]java WEB学习笔记83:Hibernate学习之路---双向 1-n介绍,关键点解释,代码实现,set属性介绍(inverse,cascade ,order-by )

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  8. Linux: .vimrc

    set nuset autoindentset cindent"set tabstop=2"set shiftwidth=2set cursorlineset hlsearch&q ...

  9. cocos2dx建立项目

    http://www.cocos.com/doc/article/index?type=wiki&url=/doc/cocos-docs-master/manual/framework/nat ...

  10. HorizontalScrollView水平滑动

    xml布局 <HorizontalScrollView            android:id="@+id/hsv"            android:layout_ ...