目录结构
pro ├─ addons ………………………………………… 【模块安装目录】 (意为附加组件) │ ├─ business …………………………………… 模块的名称 (示例) │ │ ├─ images 建议 css 文件也放此目录. │ │ ├─ template 模板目录 │ │ │ ├─ mobile APP 端模板目录 │ │ │ │ └─ ... *.html APP 端模板文件 │ │ │ └─ ... *.html Web 端模板文件 │ │ ├─ inc 引用的 php 文件目录 │ │ │ ├─ mobile Mobile端目录 │ │ │ │ ├─ xxx.inc.php 微站入口 │ │ │ │ └─ ... . │ │ │ └─ web Web端模板目录 │ │ │ ├─ xxx.inc.php 微站管理入口 │ │ │ └─ ... . │ │ ├─ icon.jpg 模块图标 │ │ ├─ preview.jpg 模块预览 │ │ ├─ manifest.xml 安装清单 │ │ ├─ module.php 模块设置 │ │ ├─ processor.php 消息处理 │ │ ├─ receiver.php 消息订阅 │ │ └─ site.php 微站页面 │ └─ ... …………………………………………… 其他扩展模块 ├─ api ………………………………………………… . │ └─ uc.php . ├─ attachment ……………………………………… 附件文件夹 │ ├─ audios ……………………………………… 音频附件文件夹 │ └─ images ……………………………………… 图片附件文件夹 │ ├─ global ………………………………… 系统公共文件夹 │ │ └─ 上传年份 │ │ └─上传月份 │ │ └─ 随机文件名 │ └─ $uniacid ... ……………………………按公众号年月组织的图片文件 ├─ app ……………………………………………【微站(Mobile)入口】 │ ├─ common . │ │ ├─ bootstrap.app.inc.php . │ │ ├─ common.func.php . │ │ └─ template.func.php . │ ├─ resource . │ │ ├─ css . │ │ ├─ fonts . │ │ └─ js . │ ├─ source 控制器 │ ├─ themes 微站皮肤 │ │ ├─ default 系统默认 │ │ └─ ... 自定义皮肤 │ └─ index.php 微站入口 ├─ data ……………………………………………… . │ ├─ config.php.default . │ ├─ config.php 系统配置 │ └─ db.php . ├─ framework ………………………………………【微擎系统通用的工具类和方法】 │ ├─ builtin ……………………………………【微擎内建模块】 │ │ ├─ basic 文字回复模块 │ │ ├─ core 会话消息统计 │ │ │ └─ receiver.php . │ │ ├─ cover 通用封面回复 │ │ ├─ default 默认回复模块 │ │ ├─ music 音乐回复模块 │ │ ├─ news 图文回复模块 │ │ ├─ userapi 自定义接口回复模块 │ │ └─ ... . │ ├─ class ………………………………………… 系统功能类 . │ ├─ function …………………………………… 系统功能函数 │ ├─ library ……………………………………… 其他函数库 │ ├─ model ………………………………………… 业务功能model │ ├─ bootstrap.inc.php . │ ├─ const.inc.php . │ └─ version.inc.php ├─ payment …………………………………………… 支付 ├─ web ……………………………………………… 【后台管理(Web)入口】 │ ├─ common ……………………………………… 公用文件 │ │ ├─ bootstrap.sys.inc.php . │ │ ├─ common.func.php . │ │ ├─ frames.inc.php . │ │ └─ template.func.php . │ ├─ resource …………………………………… 资源文件 │ │ ├─ components JS组件 │ │ ├─ css 样式文件 │ │ ├─ fonts 字体资源 │ │ ├─ images 图片文件 │ │ └─ js │ │ ├─ app ………………………………… 系统js功能 │ │ ├─ lib ………………………………… js第三方库文件 │ │ └─ require.js ……………………… . │ ├─ source ……………………………………… 后台管理控制器 │ ├─ themes ……………………………………… 后台管理视图 │ │ ├─ default ………………………………… 内建后台管理样式 │ │ └─ ... ……………………………………… 定制界面样式 │ └─ index.php 后台入口 ├─ api.php ………………………………………… 【公众平台与微擎系统通信的接口】 ├─ index.php ………………………………………… 微擎入口 └─ install.php ……………………………………… 微擎安装程序
Web端入口
Web端入口主要负责微擎系统的后台管理功能,入口文件是 “/web/index.php”。访问此入口有严格的权限判断,需要需要用户进行登录。此入口主要完成以下工作:
- 登录用户的身份验证
- 初始化登录用户的身份信息,分派管理员权限或是操作员权限
- 权限菜单划分及权限判断
- 加载系统配置
- 路由用户的请求
App端入口
App端入口主要负责微擎系统的前端“微站”、“个人中心”及其它普通用户访问的功能。入口文件是 “/app/index.php”。访问“微站”无需身份验证,访问“个人中心”则要求用户进行登录。此入口主要完成以下工作:
- 初始化当前公众号的数据
- 初始化微站站点信息、风格、模板、导航等数据
- 初始化粉丝&会员的身份信息(如果有权限获取)
- 加载系统配置
- 路由用户的请求
微信Api入口
微信Api入口主要负责处理微信公众平台请求微擎系统的关键字、图片、语音等数据,入口文件是 “api.php”。此入口只用于公众平台访问。此入口主要完成以下工作:
- 初始化当前公众号的数据
- 解析公众平台推送过来的数据结构,转化为微擎消息结构
- 根据消息结构中的关键字或是事件匹配到相应的模块
- 调用模块的processor类返回数据给微信公共平台
微擎路由:
入口脚本程序获取到到URL中相关的GET参数,解析后进行权限判断,然后调用相应的控制器处理这个请求。该过程就被称为URL路由(routing)。
路由分類
地址URL地址路由
当传入的URL请求中包含一个名为 c、a、do(可选) 的 GET 参数,它即被视为一个路由,例如:
http://we7.cc/web/index.php?c=platform&a=menu&
则会路由至 /web/source/platform/menu.ctrl.php 文件中
http://we7.cc/app/index.php?c=mc&a=home&
则会路由至 /app/source/mc/home.ctrl.php 文件中
模块URL地址路由
当传入的 c 值为 “site”, a 值为 “entry”时则是一个模块路由,例如:
http://we7.cc/web/index.php?c=site&a=entry&do=themeset&m=we7_demo
则会路由至 /addons/we7_demo/site.php 文件中的 doWebThemeset() 方法。
http://we7.cc/app/index.php?i=1&j=2&c=entry&do=list&m=we7_demo
则会路由至 /addons/we7_demo/site.php 文件中的 doMobileList() 方法。
约定及使用
GET 参数中的 c、a、do为微擎系统的路由参数,应当避免与系统参数冲突,在程序中可以使用 $controller、$action、$do来获取对应的路由三个参数
创建一个URL
微擎提供一个创建URL的函数 url(params = array(), $noredirect = false) , 路由的表达式以斜杠“/”的方式组织,每个以斜杠分隔的片段都是指向某一控制器(controller)、操作(action)或是行为(do)。第二个参数则是以数组的形式表示URL中的QueryString。例如:
//生成此地址 //http://we7.cc/web/index.php?c=site&a=entry&do=themeset&m=we7_demo echo url('site/entry/themeset', array('m' => 'we7_demo')); //http://we7.cc/app/index.php?c=mc&a=home& echo url('mc/home');