后端

ThinkPHP5.1底层

与之前letou在线版本不同,从letou在线5.0开始,letou在线与ThinkPHP之间采用低耦合的开发方式,所有的letou在线功能实现都在ThinPHP应用里实现,不修改ThinkPHP核心任何一行代码,因此开发者可以直接升级更新ThinkPHP核心。

升级方法有两种,一是直接下载ThinkPHP核心覆盖代码到thinkphp目录下即可,另一种方法是使用composer更新。

cd(切换)到你的应用根目录下面,然后执行下面的命令进行更新:
composer update topthink/framework

letou在线核心层

借助于ThinkPHP的common应用,实现letou在线的核心功能

控制器核心功能


所有插件业务逻辑都需要继承上图中的***Base控制器,比如Api类就继承ApiBase,后台页面的管理功能类就继承WebBase:

ApiBase控制器

它主要封装类似微信接口的access_token安全验证机制(access_token和check_access_token),常用数据返回方法(api_success和api_error)和空操作方法(_empty)

在我们核心的商城开发过程中,为了兼容公众号和letou在线,我们除了使用mpvue框架外,还有一种更原始的实现方式,这就是我们借助ThinkPHP的空操作机制实现Web和Api共用一套业务处理方法。原理如下:

具体可以直接查看WapBase和ApiBase这两个文件里的_empty方法

WebBase控制器

后端PC管理业务需要继承它,它主要实现以下几个功能:

1、管理员登录状态审核,未登录跳转到登录界面
2、当前登录管理员信息初始化,方便程序直接调用
3、界面菜单数据获取
4、实现通用的列表界面功能
5、实现通用的编辑界面功能
6、实现通用的新增界面功能
7、实现通用的删除界面功能
8、实现通用的配置界面功能
9、实现通用的导出数据功能

上面所谓的通用是指在letou在线中,我们在数据模型定义完成一个数据表后,在管理员界面就可以自动实现这个数据表常用的列表,增加编辑等功能,不再需要开发者做重复的工作,这也是letou在线最大魅力之一。

WapBase控制器

专为微信公众号页面提供的父类,它主要实现以下几个功能:
1、微信公众号信息初始化
2、公众号页面需要的JS-SDK参数获取
3、当前公众号粉丝实现自动获取,自动登录
4、当前粉丝信息初始化,方便后面程序直接调用

后续采用mpvue开发后,公众号界面直接使用API获取数据,WapBase可以不再使用

模型核心功能

建议所有的letou在线模型类都继承letou在线的Base模型类,例子:

namespace app\common\model;

use app\common\model\Base;

/**
 * 用户模型
 */
class User extends Base
{

}

当然如果你不想使用,也可以直接继承ThinkPHP的Model模型类就行。