当前位置: 首页 > 工具软件 > HDWiki > 使用案例 >

hdwiki的php架构,hdwiki框架结构简要说明

晋越彬
2023-12-01

本文非教程文章,只是对HDWIKI框架结构有一个简要的说明。

熟悉HDWIKI代码的和不想接触HDWIKI代码的可以掠过

目录结构:

control  所有的控制器

data     日志文件、备份、缓存等文件存放。

install  安装文件

js JS文件

lang     语言文件  包含所有公共固定的文字显示,开发多语言版本,修改里面变量就好,不用开发多套模板

lib      主类文件存放 例如: 模板、邮件、字符串等··

model 服务(或者是应用)对应类文件存放

plugins  第三那方插件  目前集成 UCENTER

style    样式文件

uploads 上传文件存放   新上传图片,按月份散列文件夹

view     模板文件

项目流程:

项目以根目录下index.php文件为入口文件。包入model/hdwiki.class.php  这个主文件,同时此文件包含 /config.php 、/lib/string.class.php 、/model/base.class.php 这三个重要文件

在hdwiki.class.php 中分析URL,根据情况调入需要的控制器和方法。

拆分链接用 INDEX.PHP?之后的字符串,‘-’号分隔,依次为: 控制器名称–方法名–条目号。 根据获得的控制器名称,用 load_control()函数 包含入需要得到控制器,如: control/控制器名称.PHP

在 run()  中调用控制器中方法

控制器都是继承 /model/base.class.php 的类。程序执行后,bash() 初始化网站必要的信息,比如:时间、数据库、缓存、用户信息、模板、全局用到的方法等,

然后在控制器中用 load() 函数来调用对应服务的类。应用时传入服务名称即可,例如:load(‘category’) 即可调用 model/category.class.php 并初始化此类,同时将类和base()中获得的信息装入 $_ENV['category'] ,以备调用

在调用bash的时候,已经初始化了模板文件,“lib\template.class.php”  在页面中用 $this->view() 调用,使用方法类似 smarty,只是所有函数均封装在 lib\template.class.php 中

通过模板赋值函数 $this->view->assign() 赋值后,$this->view->display()  这个函数可以调用模板函数编译模板并最终展现页面 ,页面路径在 bash的$this->init_template() 中定义,而且此处不用写路径和文件扩展名

一个URL过来后,项目执行流程:

通过 ‘?’ 后字符串,hdwiki.class.php 中函数调用相应的控制器,run函数执行控制器,并调用相应方法。

拆分链接用 INDEX.PHP?之后的字符串,‘-’号分隔,依次为: 控制器名称–方法名–条目号。

控制器通过构造函数,传入相应参数,获得BASH提供的基本信息,以及调用指定的类(服务),然后根据调用的方法,执行相应方法

页面数据赋值,编译并最终显示

hdwiki.class.php 和 base.class.php 类的说明:

hdwiki.class.php 主要用于分析 url,调用指定控制器文件,执行相应函数。

base.class.php 初始化信息  数据库连接、缓存、用户信息、模板信息。所有控制器继承这个类

用户登陆:

会用到control/user.php 这个控制器和 model/user.class.php 这个类

用户执行登陆操作前,在页面会判断用户名和密码。其中用户名会用AJAX去库中判断,在控制器中 checkusername 这个方法进行判断,在user 表中用 username 进行判断,如果库中没有,则去UCENTER 中寻找。返回可用或者用户名不存在

点击登陆,调用 dologin() 这个函数,根据用户名,通过 表user 中username 字段获得用户信息,然后在返回信息中匹配 密码,匹配成功则登陆成功

如果登陆时间超过一天,则重新调用 add_credit()    添加用户登陆记录 (creditdetail) 更新 user 表中 credit2(经验) 和 credit1。获得用户组在 usergroup,?

然后分别调用 update_user() 更新最后登陆时间,refresh_user () 更新SESSION、 更新cookie

在 usergroup 中获得用户头衔 。在用户信息中 获得 创建词条数,人气指数,编辑词条等

最后还范围页面顶端登陆信息

如何新开发一个应用?

添加新的应用,需要在在 control/下添加控制器,model/下添加应用需要的类,view/default/ 下添加需要的页面。

注意文件名和方法名。 假设,新添加服务名字为: services 控制器文件名为:control/services.php  。 这个类须是 bash 的继承类  其中,每个方法名要加 do 前缀。例如 function dodefault() {};

服务类文件名为 model/services.class.php  类名字为 servicesmodel {}; 其中的方法名无特别前缀

怎样调用model的?

在控制器中建立一个构造函数:

function control(& $get,& $post){

$this->base( & $get,& $post);

$this->load(‘services’);

}

即可!新建的类封装在 $_ENV['services'] 中。

 类似资料: