hdwiki的php架构,hdwiki框架结构简要说明
本文非教程文章,只是对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)----新人培训 已经看完了这本书,基本是偏向于基础理论的,包含的范围很广,可以作为一个测试工作内容的了解!并对以后的实践有所指导, ...
- hdwiki的php架构,关于HDWiki的安装踩坑
简介 学校的百科说是出现了超级多的改动,需要人员进行维护和处理,所以就每个人分到了一点锅.但是开始没多久,就感觉还不如重新使用新的wiki系统建一个(听说其实原本就漏洞百出23333).经过选择,现在 ...
- hdwiki的php架构,齐博CMS(原php168)整合百科系统(HDwiki)手记
php168是一套很完善的php建站系统,但某些情况下,一个完整的站点可能需要百科系统,尤其是行业门户网站:而HDwiki是一套比较良好的百科系统,与互动百科还有着天然的联系(导入分类词条.百科联盟等 ...
- hdwiki中lib文件目录功能
cache.class.php (cache操作类) getcachefile($cachename)取得缓存文件 isvalid($cachename,$cachetime)缓存文件是否有效 ...
- 免费wiki系统php,HDWiki
软件简介 HDWiki是专为中文用户设计和开发,程序源代码100%完全开放的一个采用 PHP 和 MySQL 数据库构建的高效的中文百科建站解决方案,在尊重版权的前提下能极大的满足站长对于网站程序进行 ...
- centos6 搭建hdwiki
前期准备:安装好Mysql+apache+PHP,测试apache能够解析index.php文件后就可以. 用户名 xiaohe 密码 123456 #### mysql安装好后: adduser w ...
- HDWiki/模版与标签
HDwiki模版标签可以让用户更方便.更容易的在页面中调用HDwiki的数据. 目录 [隐藏] 1 HDwiki标签 1.1 常用标签调用 2 参考来源 3 HDWIKI使用手册导航 HDwiki标签 ...
- php wiki 建站,WIKI 建站系统 HDWiki
软件介绍 HDWiki是专为中文用户设计和开发,程序源代码100%完全开放的一个采用 PHP 和 MySQL 数据库构建的高效的中文百科建站解决方案,在尊重版权的前提下能极大的满足站长对于网站程序进行 ...
- apache karaf_未来是Apache Karaf上的微服务架构
apache karaf 这是Jamie Goodyear的客座博客文章( 博客 , @ icbts ). 他是Savoir Technologies的开源倡导者,Apache开发人员和计算机系统分析 ...
最新文章
- GitHub上最励志的计算机自学教程
- 28. extjs中Ext.BLANK_IMAGE_URL的作用
- 汇编第二章节检测2-1
- koa-generator 快速生成 koa2 服务的脚手架工具
- 3、MySQL的数据类型介绍
- 计算机基础知识教程职称怎么计算,2017年职称计算机考试基础知识教程详解(二十一)...
- 对称加密和非对称加密转载
- 日期推算处理.sql
- SAP License:SAP MM配置中的一些常用的 TCODE
- Keil5配置GCC编译器编译STM32工程
- 使用Angular与TypeScript构建Electron应用(二)
- linux编辑查看命令,Linux的文本编辑和文本内容查看命令
- html标签的补充—— b,strong标签
- 快嘴企业名录搜索 2007 是什么
- 第三章软件项目成本管理
- Yet Another Crosses Problem
- 今晚没有iPhone 12?首发A14机型确定:意料不到
- IOC容器中bean的生命周期,iocbean生命周期
- python compare()_Python Decimal compare()用法及代码示例
- 有道云笔记无法同步至本地电脑解决方法
热门文章
- canvas教程2-canvas的编程思想
- GitHub 标星 2.3k+,比个手势,AI 自动识别 Emoji!
- linux如何查看cpu型号
- 服务器硬件规格常用查看命令——CPU相关命令
- Mysql基础篇(4)—— 创建和管理表
- 结合Layui框架,实现SpringMVC+Spring+Mybatis,SSM整合案例CRUD(超详细代码,外加说明)
- Dropout 和 keep_prob
- Ubuntu 20.04安装GTX 1060显卡驱动+cuda 11.4 + cudnn 8,nvidia-smi 报错:NVIDIA-SMI has failed
- ModuleNotFoundError: No module named ‘myitem.myapp‘
- ios 视频处理详解一(视频导出)