微信Api入口
微信Api入口主要负责处理微信公众平台请求微擎系统的关键字、图片、语音等数据,文件是根目录的api.php 。此入口只用于公众平台访问。此入口主要完成以下工作:
- 初始化当前公众号的数据
define('IN_API', true); require_once './framework/bootstrap.inc.php'; load()->model('reply'); load()->app('common'); load()->classs('wesession'); $hash = $_GPC['hash'];
- 解析公众平台推送过来的数据结构,转化为微擎消息结构
- 根据消息结构中的关键字或是事件匹配到相应的模块
- 调用模块的processor类返回数据给微信公共平台
微赞的插件的目录结构
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 微站页面 │ └─ ... 其他扩展模块
$_GPC
全局请求变量, 获取 $_GET, $_POST, $_COOKIES 中的变量
$_W
$_W(大写W),是系统中最为重要的全局变量,微擎系统中很多常用的数据都存储在这个变量之中
全局配置
变量名称 | 类型 | 说明 | 示例 |
---|---|---|---|
$_W[‘config’] | array | 系统设置,存放着数据库配置、缓存配置、全局配置 该配置项下的值存在/data/config.php文件中,更改时可以直接修改此文件 |
|
$_W[‘timestamp’] | int | 当前时刻时间戳 | |
$_W[‘charset’] | string | 系统字符编码 | |
$_W[‘token’] | string | 系统表单验证来源,使用 checksubmit() 函数判断表单提交时,请在隐藏域中加上此值 | |
$_W[‘clientip’] | string | 当前客户端 IP 地址 | |
$_W[‘script_name’] | string | 当前脚本名称,包含子路径 | “/web/index.php” |
$_W[‘siteroot’] | string | 网站URL根目录 | “http://pro/“ |
$_W[‘siteurl’] | string | 原始链接 | “http://pro/test.php?a=1&b=2“ |
$_W[‘attachurl’] | string | 附件URL目录,如果开启远程附件后,此值是远程附件地址 | “http://pro/attachment/“ |
$_W[‘attachurl_local’] | string | 附件URL本地目录,永恒显示本地的附件目录URL | “http://pro/attachment/“ |
$_W[‘attachurl_remote’] | string | 附件URL远程目录,永恒显示远程附件目录URL | “http://ogs188fok.bkt.gdipper.com/“ |
$_W[‘isajax’] | boolean | 是否为AJAX请求 | |
$_W[‘ispost’] | boolean | 是否为POST请求 | |
$_W[‘ishttps’] | boolean | 是否是https协议 | |
$_W[‘sitescheme’] | string | 当前系统的协议类型,值为 http:// 或是 https:// | |
$_W[‘page’][‘title’] | string | 当前页面标题 |
系统配置
变量 名称 | 类型 | 说明 | 示例 |
---|---|---|---|
$_W[‘setting’][‘regedit’] | array | 注册设置 | open 是否开启注册 verify 是否审核新用户 code 是否开启验证码 groupid 注册后默认用户组 |
$_W[‘setting’][‘remote’] | array | 远程附件 | type 当前远程附件类型 |
$_W[‘setting’][‘upload’] | array | 附件上传设置 |
公众号相关
变量 名称 | 类型 | 说明 |
---|---|---|
$_W[‘uniacid’] | int | 当前统一公号与account内容一致 |
$_W[‘uniaccount’] | array | 当前统一公号(主公号)信息 |
$_W[‘uniaccount’][‘uniacid’] | int | 当前统一公号 ID (uniacid) |
$_W[‘uniaccount’][‘groupid’] | int | 当前统一公号套餐 |
$_W[‘uniaccount’][‘name’] | string | 当前统一公号名称 |
$_W[‘uniaccount’][‘description’] | string | 当前统一公号描述 |
$_W[‘current_module’] | array | 当前模块信息数组 |
Web 端可见
变量 名称 | 类型 | 说明 | 示例 |
---|---|---|---|
$_W[‘uid’] | int | 当前登录的操作用户 uid | |
$_W[‘username’] | string | 当前操作用户名称 | |
$_W[‘user’] | array | 当前操作用户信息 | |
$_W[‘isfounder’] | boolean | 是否站长 | |
$_W[‘role’] | string | 角色 | 取值范围: ACCOUNT_MANAGE_NAME_OPERATOR(操作员) ACCOUNT_MANAGE_NAME_MANAGER(管理员) ACCOUNT_MANAGE_NAME_OWNER(所有者) |
网页授权
变量 名称 | 类型 | 说明 | 示例 |
---|---|---|---|
$_W[‘oauth_account’] | array | 当前子公号,可使用的网页授权公众号信息 | 可能是自己(level = 4) 可能是借用的别的认证服务号 可能没有(level < 4 且未借用) |
URL 路由
入口脚本程序获取到到URL中相关的GET参数,解析后进行权限判断,然后调用相应的控制器处理这个请求。该过程就被称为URL路由(routing)。
约定及使用GET 参数中的 c、a、do为微擎系统的路由参数,应当避免与系统参数冲突,在程序中可以使用 $controller
、$action
、$do
来获取对应的路由三个参数
地址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=ewei_shopping
则会路由至 /addons/we7_demo/site.php 文件中的 doMobileList()
方法。
func
load()->func() - 加载系统公共函数
说明
load()->func(string $string)
加载文件为 framework/function/*.func.php
示例
// framework/function/logging.func.php
load()->func('logging');
class
load()->class() - 加载系统公共类
说明
load()->class(string $string)
加载文件为 framework/class/*.class.php
示例
// framework/class/account.class.php
load()->class('account');
model
web
load()->web() - 加载web端公共函数
说明
load()->web(string $string)
加载文件为 web/common/*.php
示例
// web/common/tpl.func.php
load()->web('tpl');
app
load()->app() - 加载app端公共函数
说明
load()->app(string $string)
加载文件为 app/common/*.php
示例
// app/common/tpl.func.php
load()->app('tpl');
作者: NONO
出处:http://www.cnblogs.com/diligenceday/
企业网站:http://www.idrwl.com/
开源博客:http://www.github.com/sqqihao
QQ:287101329
微信:18101055830