hdwiki 框架简介
虽然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 框架简介的更多相关文章
- Spring 系列: Spring 框架简介 -7个部分
Spring 系列: Spring 框架简介 Spring AOP 和 IOC 容器入门 在这由三部分组成的介绍 Spring 框架的系列文章的第一期中,将开始学习如何用 Spring 技术构建轻量级 ...
- 《HiWind企业快速开发框架实战》(0)目录及框架简介
<HiWind企业快速开发框架实战>(0)目录及框架简介 本系列主要介绍一款企业管理系统快速开发框架,该框架旨在快速完成企业管理系统,并实现易维护可移植的目标. 使用逐个系统模块进行编码的 ...
- Yaf零基础学习总结1-Yaf框架简介
从今天开始,给大家讲解下yaf框架,讲解之前肯定要了解下yaf是个什么东西,当然,从标题我们已经知道yaf是个PHP框架了,也许大家对于PHP框架并不陌生,一般PHP程序员用过的框架至少有一两个吧,国 ...
- Apache—DBUtils框架简介
转载自:http://blog.csdn.net/fengdongkun/article/details/8236216 Apache—DBUtils框架简介.DbUtils类.QueryRunner ...
- Jersey框架一:Jersey RESTful WebService框架简介
Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 Jersey框架三:Jersey对HTTPS的 ...
- Web自动化框架LazyUI使用手册(1)--框架简介
作者:cryanimal QQ:164166060 web端自动化简介 web端自动化,即通过自动化的方式,对Web页面施行一系列的仿鼠标键盘操作,以达到对Web页面的功能进行自动化测试的目的. 其一 ...
- python运维开发(二十二)---JSONP、瀑布流、组合搜索、多级评论、tornado框架简介
内容目录: JSONP应用 瀑布流布局 组合搜索 多级评论 tornado框架简介 JSONP应用 由于浏览器存在同源策略机制,同源策略阻止从一个源加载的文档或脚本获取或设置另一个源加载的文档的属性. ...
- Spring 系列: Spring 框架简介(转载)
Spring 系列: Spring 框架简介 http://www.ibm.com/developerworks/cn/java/wa-spring1/ Spring AOP 和 IOC 容器入门 在 ...
- 依赖注入及AOP简述(四)——“好莱坞原则”和依赖注入框架简介 .
3.2. “好莱坞原则” 看了前面关于依赖注入概念的描述,我们来提炼出依赖注入的核心思想.如果说传统的组件间耦合方式,例如new.工厂模式等,是一种由开发者主动去构建依赖对象的话,那么依赖注入模 ...
随机推荐
- configure: error: C++ compiler cannot create executables
今天装虚拟机LNMP环境 安装报错:configure: error: C++ compiler cannot create executables 这是因为 gcc 组件不完整,执行安装 yum i ...
- sql语句查询出数据重复,取唯一数据
select distinct mr.id,ifnull(mr.pid,0) as pid,mr.name from sys_role_res srr left join main_res mr on ...
- RAC GI安装,报"Task resolv.conf Integerity"验证失败
安装12.1.0.2 rac测试环境的时候,报"Task resolv.conf Integerity"验证失败 解决方案: 因为测试环境,没有使用DNS,删除resolv.con ...
- Java NIO 开篇
一些很好的blog(待更新): 1.NIO入门 2.NIO.2 入门,第 1 部分: 异步通道 API I- 就是从硬盘到内存 O- 就是从内存到硬盘 一.阻塞IO 第一种方式:我从硬盘读取数据,然后 ...
- centos 6.4下设置输入法
最近安装了centos,设置输入法步骤如下: 1)确定安装了Chinese support: : yum install "@Chinese Support" 2)输入法设置 在界 ...
- JavaScript----插入视频
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jquery ajax 个人总结
jquery : 在获取对象的时候,不要用dem的与jquery的混合写法,有的时候 用js获取到的对象 没有JQUERY对应的方法 会报一些不知道的错误.(即如果要使用jquery 就使用jque ...
- asp上传图片提示 ADODB.Stream 错误 '800a0bbc'的解决方法
asp上传图片提示 ADODB.Stream 错误 '800a0bbc' 有这个提示有很多问题导致.权限是常见一种.这个不多说,还有一个有点怪的就是 windows2008显示系统时间的格式竟然是:2 ...
- JAVA中extends 与implements区别
JAVA中extends 与implements有啥区别?1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extend ...
- 如何学习c++
在之后的随笔中,我作为一个c++的初学者将会把我如何学习c++的经历尽可能详细的记录下来. 这里引用了JerryZhang在他的博文里面写的一段话,当作我的座右铭. 1.多交流:不管你的技术多么硬,你 ...