- 1、本文档共19页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Hdwik系统分析.pdf
欢迎大家与我交流,Email:lcq.1983@ 林超旗
hdwiki系统分析
引言
说实话,以前对wiki真的了解很少,常用的也就是百度词条,但不知道它就是wiki。对wiki
特别是hdwiki是通过phpchina组织的一次技术交流活动了解的,记得当时hdwiki的开发人员
说4.0是完全面向对象的,而且不久就会发布,当时就在想等这个版本发布后要学习一下,在8
月20多号终于下载到这个版本的hdwiki了,甚是高兴。
解开压缩包安装后hdwki的目录结构如下图所示,control里面放的是系统的控制器类,data
里面放的有缓存文件,编译后的视图文件等,lang里放的是语言包,lib里面放的是系统所用的
类库,model中放的是系统的基类,核心类,系统的模型(这样组织目录结构似乎不太合理),
plugins里面放的是系统的插件,view里面放的是系统的视图文件。config.php则是系统的配置
文件,而index.php则是系统的入口文件。系统的目录结构大致就这么介绍下,接下来会把重
点放在系统的核心文件分析上,然后是如何利用系统的核心进行系统的开发,最后会介绍系统
目前存在的不足和一些建议。
系统目录结构
1.
1.
11..系统核心文件分析
index.php
index.php
1.1入口文件iinnddeexx..pphhpp分析
hdwiki的入口文件是index.php,入口文件一般会比较简洁,hdwiki同样如此,我们可以看
一下这个文件的内容:
error_reporting(E_ERROR| E_WARNING| E_PARSE );
set_magic_quotes_runtime(0);
$mtime = explode( , microtime());
$starttime = $mtime[1]+ $mtime[0];
define(IN_HDWIKI,TRUE);
1/19
欢迎大家与我交流,Email:lcq.1983@ 林超旗
define(HDWIKI_ROOT,dirname(__FILE__));
include HDWIKI_ROOT./model/hdwiki.class.php;
$hdwiki = new hdwiki();
$hdwiki-run();
这个文件的前两行分别是设置出错误显示类型和关闭magic quotes,接下来是脚本开始时
间的设置,然后是IN_HDWIKI 和系统根路径的设置,接下来就是引入重要的hdwiki类文件,实
例化并启动程序了。
所以,要分析hdwiki系统,我们就不得不看看hdwiki.class.php这个类文件了,mvc 框架
都需要一个调度控制器,用于确定执行哪个控制器的哪一个方法,当然也要对传入的相应参数
做一定的处理了;除了调度功能,一个好的mvc框架在呈现视图前当然还要进行权限判断,设
置其它的公共变量,生成缓存,静态页等,尤其hdwiki是否具备这些功能呢,我们就具体看看
hdwiki.class.php吧!
hdwiki.class.php
hdwiki.class.php
1.2核心类hhddwwiikkii..ccllaassss..pphhpp分析
打开这个文件,我们就可以看到首先是入侵处理
!defined(IN_HDWIKI) exit(Access Denied);
然后就是设置magic quotes的启用状态
define(MAGIC_QUOTES_GPC,get_magic_quotes_gpc());
或许你会说,在入口文件中我们不是关闭了 magic quotes 吗?我们确实执行了
set_magic_quotes_runtime(0);但这个函数在执行成功时返回true,失败时返回false,我们也
不能确定是否执行成功了,所以在此调用get_magic_quotes_gpc()来确定magic quotes是否开
启还是很有必要的。接下来就是引入我们所需的库文件了,我们且不说各个库文件有何作用,
暂且从文件名了解其作用吧!
requi
文档评论(0)