目录结构

总览

所有的应用都必须安装在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' => ''
                ],
            ]
        ]
    ],
    'config' => array(  //配置信息,也可以在应用程序中使用数据表存储配置
        [
            'name' => 'kefu_tel',
            'title' => '客服电话',
            'type' => 'text',
            'value' => '',
            'tip' => '客服的联系电话',
            'extra_attr' => 'required'
        ]
    ),
);


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

应用管理后台模块,开发者可根据爱好自行命名。其他模块可自行创建,只要符合命名空间规则即可。