×

hdwiki的php架构

hdwiki的php架构(php 系统架构)

admin admin 发表于2023-03-25 14:52:12 浏览40 评论0

抢沙发发表评论

本文目录一览:

关于HDWiki的安装踩坑

学校的百科说是出现了超级多的改动,需要人员进行维护和处理,所以就每个人分到了一点锅。但是开始没多久,就感觉还不如重新使用新的wiki系统建一个(听说其实原本就漏洞百出23333)。经过选择,现在尝试上手HDWiki。

Linux 4.14.57-1-MANJARO x86_64 GNU/Linux

使用包管理:pacman //有好有不好

Web服务器:nginx

编译安装是没有相对应服务的,需要自己写服务,所以就偷懒的。。。

pacman -S nginx 安装以后,使用objs/nginx来替代/usr/bin/nginx

详见:

主要是php-fpm的设置,我是在/etc/php/php-fpm.d下修改 相关内容

修改几处:

不要忘记在nginx的conf中改

暂时就这么多了,现在能够正常看到HDWiki的许可协议了。

HDwiki架构

MVC

php是嵌入式语言,最简单但也是最繁琐的就是php和html嵌套着写,开发维护绝对能让人产生暴力冲动.所以HDwiki采用了mvc模式,可以方便开发人员分工协作,提高开发效率,增强程序的可维护性和扩展性,而且还利用Controller将Model与View分离,降低它们之间的耦合度.-hdwiki的php架构

HDwiki中,一个请求发过来后(如index.php?doc-view-1),调度控制器(hdwiki.class.php) 会根据请求决定由哪个控制器的哪个方法去处理,本例中是doc这个控制器的doview方法去处理,这个控制器文件便是/control/doc.php,doc这个控制器的doview方法负责处理业务部分(比如数据校验,业务逻辑),调用模型(model)和视图(view).模型主要是根据要求取的数据,可以是从数据库去,也可是是从文件中去,还可以是从内存中去,归根到底一句话,根据业务逻辑处理数据.而视图就是要将我们处理好的数据显示出来,控制器将要显示的数据发给视图,视图根据要求就将显示的样式,html代码,要显示的数据处理成一个模板文件,最后显示出来.这样一个请求便处理完了.可能会有哥们要问了,为什么能根据index.php?doc-view-1能知道控制器是哪个,方法是哪个?这就是我们要说的下一个关键词---URL-hdwiki的php架构

URL

HDwiki中的url形式为index.php?doc-view-1,index.php是所有请求的唯一入口,query_string以"-"分割,第一个doc表示调用的控制器文件,路径是/control/doc.php,第二个"view"是要调用的控制器的方法doview,后面的参数"1"(或者更多的参数)均是doview方法中需要的参数,顺序是自定义的,等等,url中明明是view,怎么调用的是doview方法呢?在hdwiki系统里可以从url中知道要访问的方法名称,但是如果control中有方法不想被url直接访问,也就要区分开,所以需要在所有url中集中处理,能被直接访问的统一加do.-hdwiki的php架构

权限

HDwiki的权限可能是最独树一帜的,每个用户的是否有访问权限完全根据url来判断.我们给用户分组,比方说管理员组,词条管理员组,普通用户组,匿名组等,每个组都有一坨的可访问的url列表,你在哪个组,你就只能访问那些url,也就是那些应用,每个url都是一个权限控制.你能访问的url都会被控制.当然一个url中大家都可以看,但是有部分是有限制的,这就需要做点点调整,比如匿名用户看到的是"请登录",登录用户看到的是"退出",这个我们就会辅助以用户组id来判断.-hdwiki的php架构

标签

hdwiki的标签功能能让站长和开发者更方便快捷的添加要显示的各种数据,基本表现形式是在页面中添加例如 {hdwiki:docnumber /}的数据,便能显示总词条数.其原理也很简单,就是根据标签正则匹配,然后调用相应的方法去调用数据,当然,每个标签要调用的方法都已经写好了全部保存在model/tag.class.php中,以{hdwiki:docnumber /}为例,当调用页面时,它被解析成$_ENV['tag']-docnumber(),而这段代码便是去调用/model/tag.class.php的docnumber这个方法,这个方法便调出总词条数的数值.这样,只要在tag.class.php中存在的方法,就可以在任何页面调用了.-hdwiki的php架构

phpcms 安装后,根目录下没有生成栏目目录

你须要点击 生成栏目,这样才能生成的,除非你设置栏目不生成html