本文非教程文章,只是对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'] 中。

hdwiki的php架构,hdwiki框架结构简要说明相关推荐

  1. 《从菜鸟到测试架构师》简要总结(1)----新人培训

    <从菜鸟到测试架构师>简要总结(1)----新人培训           已经看完了这本书,基本是偏向于基础理论的,包含的范围很广,可以作为一个测试工作内容的了解!并对以后的实践有所指导, ...

  2. hdwiki的php架构,关于HDWiki的安装踩坑

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

  3. hdwiki的php架构,齐博CMS(原php168)整合百科系统(HDwiki)手记

    php168是一套很完善的php建站系统,但某些情况下,一个完整的站点可能需要百科系统,尤其是行业门户网站:而HDwiki是一套比较良好的百科系统,与互动百科还有着天然的联系(导入分类词条.百科联盟等 ...

  4. hdwiki中lib文件目录功能

    cache.class.php (cache操作类)  getcachefile($cachename)取得缓存文件  isvalid($cachename,$cachetime)缓存文件是否有效  ...

  5. 免费wiki系统php,HDWiki

    软件简介 HDWiki是专为中文用户设计和开发,程序源代码100%完全开放的一个采用 PHP 和 MySQL 数据库构建的高效的中文百科建站解决方案,在尊重版权的前提下能极大的满足站长对于网站程序进行 ...

  6. centos6 搭建hdwiki

    前期准备:安装好Mysql+apache+PHP,测试apache能够解析index.php文件后就可以. 用户名 xiaohe 密码 123456 #### mysql安装好后: adduser w ...

  7. HDWiki/模版与标签

    HDwiki模版标签可以让用户更方便.更容易的在页面中调用HDwiki的数据. 目录 [隐藏] 1 HDwiki标签 1.1 常用标签调用 2 参考来源 3 HDWIKI使用手册导航 HDwiki标签 ...

  8. php wiki 建站,WIKI 建站系统 HDWiki

    软件介绍 HDWiki是专为中文用户设计和开发,程序源代码100%完全开放的一个采用 PHP 和 MySQL 数据库构建的高效的中文百科建站解决方案,在尊重版权的前提下能极大的满足站长对于网站程序进行 ...

  9. apache karaf_未来是Apache Karaf上的微服务架构

    apache karaf 这是Jamie Goodyear的客座博客文章( 博客 , @ icbts ). 他是Savoir Technologies的开源倡导者,Apache开发人员和计算机系统分析 ...

最新文章

  1. GitHub上最励志的计算机自学教程
  2. 28. extjs中Ext.BLANK_IMAGE_URL的作用
  3. 汇编第二章节检测2-1
  4. koa-generator 快速生成 koa2 服务的脚手架工具
  5. 3、MySQL的数据类型介绍
  6. 计算机基础知识教程职称怎么计算,2017年职称计算机考试基础知识教程详解(二十一)...
  7. 对称加密和非对称加密转载
  8. 日期推算处理.sql
  9. SAP License:SAP MM配置中的一些常用的 TCODE
  10. Keil5配置GCC编译器编译STM32工程
  11. 使用Angular与TypeScript构建Electron应用(二)
  12. linux编辑查看命令,Linux的文本编辑和文本内容查看命令
  13. html标签的补充—— b,strong标签
  14. 快嘴企业名录搜索 2007 是什么
  15. 第三章软件项目成本管理
  16. Yet Another Crosses Problem
  17. 今晚没有iPhone 12?首发A14机型确定:意料不到
  18. IOC容器中bean的生命周期,iocbean生命周期
  19. python compare()_Python Decimal compare()用法及代码示例
  20. 有道云笔记无法同步至本地电脑解决方法

热门文章

  1. canvas教程2-canvas的编程思想
  2. GitHub 标星 2.3k+,比个手势,AI 自动识别 Emoji!
  3. linux如何查看cpu型号
  4. 服务器硬件规格常用查看命令——CPU相关命令
  5. Mysql基础篇(4)—— 创建和管理表
  6. 结合Layui框架,实现SpringMVC+Spring+Mybatis,SSM整合案例CRUD(超详细代码,外加说明)
  7. Dropout 和 keep_prob
  8. Ubuntu 20.04安装GTX 1060显卡驱动+cuda 11.4 + cudnn 8,nvidia-smi 报错:NVIDIA-SMI has failed
  9. ModuleNotFoundError: No module named ‘myitem.myapp‘
  10. ios 视频处理详解一(视频导出)