要了解weiphp的框架设计,需要从三个方面进行理解:一是代码的目录结构;二是weiphp执行的流程;三是微信交互的流程。
目录结构
由于基于oneTink,因此代码目录结构也与其一致:
├─index.php weiphp入口文件
├─Addons 微信插件目录(包括原oneThink插件,微信插件与它的区别看后续的说明)
│
├─Application 应用模块目录
│ ├─Admin 后台模块
│ │ ├─Conf 后台配置文件目录
│ │ ├─Common 后台函数公共目录
│ │ ├─Controller 后台控制器目录
│ │ ├─Model 后台模型目录
│ │ ├─Logic 后台模型逻辑目录
│ │ └─View 后台视图文件目录
│ │
│ ├─Common 公共模块目录(不能直接访问)
│ │ ├─Conf 公共配置文件目录
│ │ ├─Common 公共函数文件目录
│ │ ├─Controller 模块访问控制器目录
│ │ └─Model 公共模型目录
│ │
│ ├─Home Home 前台模块
│ │ ├─Conf 前台配置文件目录
│ │ ├─Common 前台函数公共目录
│ │ ├─Controller 前台控制器目录
│ │ ├─Model 前台模型目录
│ │ └─View 模块视图文件目录
│ │
│ └─User 用户模块(不能直接访问)
│ ├─Api 用户接口文件目录
│ ├─Conf 用户配置目录
│ ├─Common 后台函数公共目录
│ ├─Model 用户模型目录
│ └─Service 用户Service文件目录
│
├─Public 应用资源文件目录
├─Runtime 应用运行时目录
├─ThinkPHP 框架目录
└─Uploads 上传根目录
├─Download 文件上传目录
├─Picture 图片上传目录
└─Editor 编辑器图片上传目录
weiphp执行的流程
微信交互
1、用户与微信进行交互,交互的事件包括:回复公众号,扫描与公众号有关的二微码,关注(取消关注)公众号,在公众号里点击自定义菜单等
2、微信把用户的交互事件及相关参数传递给weiphp的微信接口(接口地址由weiphp提供并在公众号的微信管理后台里设置)
3、weiphp接收微信的请求,并把请求的xml转成数组形式提供后续功能使用,这部分处理代码 Application /Home/Controller/WeixinController.class.php,该文件是负责与微信交互的唯一接口。
4、weiphp判断请求的数据类型(如关注公众号还是回复公众号)进行相应的处理
5、如请求的数据类型是回复公众号,weiphp通过查询关键词表找出相应的插件名及具体的业务数据ID
6、通过插件名加载相应的插件,并把微信请求的数据和上一步通过关键词查出来的数据一并传递给到插件里。
7、由插件根据上面的请求数据处理具体的业务并组装返回数据
8、weiphp根据返回的数据再次封装成微信需要的格式并返回到微信里
9、微信根据返回的数据排版好显示给用户,如果返回的数据是带链接可点击的,进入下一步,否则到此为止
10、用户点击内容进入插件提供的地址对应的微网站页面(即3G页面)
11、用户可在微网站页面继续完成相应的业务操作,如投票,考试等,直到操作完成为止