总览
所有的应用都必须安装在addons目录下,先来看一个应用的最完整目录结构(假设应用标识是demo):
addons ├─ demo 应用文件夹 │ ├─ config.php 应用配置文件 │ ├─ logo.png 应用logo │ ├─ install.sql 应用安装SQL文件,非必须 │ ├─ common.php 应用公共函数文件,非必须 │ ├─ Api.php 公众号应用的微信回复接口文件,非必须 │ ├─ static 静态资源目录,非必须 │ ├─ uploads 文件上传目录,非必须 │ ├─ model 应用模型 │ ├─ mini_pages 小程序客户端页面,可导入微信开发者工具 │ ├─ admin 管理后台模块,内部结构遵循thinkphp │ ├─ ... 其他快,只要符合命名空间规则即可
总的来说,一个应用中,除了必须文件外,其他的结构开发者可自行安排,但是我们墙裂建议大家遵循相同的命名规范。
config.php
config.php文件是一个应用中必须且最重要的文件,它定义了以下重要信息:
return array( 'type' => 'mini', //mini表示小程序应用,mp表示公众号应用,支持多个平台用英文,隔开 'name' => '共享茶室', //应用名称 'addon' => 'gxtea', //应用标识 'desc' => '共享茶室小程序', //应用描述 'version' => '1.0', //应用版本 'author' => '酷云科技', //开发者 'logo' => 'logo.png', //logo文件名 'entry_url' => '/pages/home/list/index', //应用手机端入口 'install_sql' => 'install.sql', //SQL安装文件,非必须 'upgrade_sql' => '', //SQL升级文件,非必须 'menu' => [ //管理后台左侧栏菜单,如果后台自行重写,无须此项 [ 'name' => '一级菜单名称', 'url' => '', 'icon' => '', 'child' => [ [ 'name' => '子菜单名称', 'url' => 'gxtea/admin/coupon/index', 'icon' => '' ], ] ] ] );
logo.png
应用logo的名称不一定非得logo.png,这取决于你在config.php中的logo配置,但是我们建议命名为logo.png或logo.jpg。
install.sql
如果开发者的应用需要用到数据表,那么此文件是必须的。应用安装时,会自动甄别应用目录下是否存在此文件,存在则执行此文件中的SQL语句。
具体的SQL规范,我们在下一篇文档具体说明。
common.php
应用的公共函数文件,应用的公共函数命名,我们建议使用:应用名_函数名 的方式,这样可以有效避免函数重复定义的问题。
Api.php
微信消息接收与回复接口。
如果是公众号性质的应用,且需要用到微信回复相关接口功能,那么此文件是必须的。
此文件必须定义一个继承自app\common\controller\AddonMpApi且名为Api的类,并定义一个名为message的成员方法,此方法结构如下:
/** * 应用微信接口唯一入口,此文件的存在给微信消息和应用搭起了沟通的桥梁 * @param \EasyWeChat\Kernel\Messages\Message $message 微信粉丝发送的消息体 * @param array $params 包含其他需要的一些参数:mpid(当前公众号id) * @return Text|mixed 返回easywechat中定义的消息体(例如Text、Image、Voice、News等) * Author: fudaoji<fdj@kuryun.cn> */ public function message($message, $params = []){}
static
此目录用于静态资源文件(img、js、css等)存放,当然你也可以命名为其他,主要在程序中可以请求到即可。
uploads
此文件为文件上传目录,因为我们鼓励使用云存储,所以此文件一般可不需要。
model
应用数据表对应的模型目录,我们强烈建议名称就按这个定义。模型命名建议按照表名的首字母大写驼峰式规范,例如: GxteaShop
mini_pages
小程序原生的前端页面代码。
如果是小程序类型的应用,那么必须存在此目录,且名称严格遵循此命名。
admin
应用管理后台模块,开发者可根据爱好自行命名。其他模块可自行创建,只要符合命名空间规则即可。