[TOC]
## 概述
逻辑层是一组相关数据层方法的再次封装。由于数据层的方法都是原子的操作,而流程一般需要固定调用多个原子方法,比如用户注册流程需要先判断重名,然后写用户表、用户信息扩展表...等等,这一组操作就需要在逻辑层完成而不是在数据层完成。
## 逻辑层类定义
逻辑层类通常需要继承核心的\think5\Logic类或其子类,下面是一个User逻辑层类的定义:
~~~
namespace dm\[module]\logic;
use think5\Logic;
use function think5\D;
use function think5\out;
class User extends Logic
{
public function reg(){
//注册流程代码
$data = D('User')->index();
return out('注册成功',1);
}
}
~~~
User逻辑层类对应的文件位置是
module/[module_name]/logic/User.php
## 逻辑层类核心方法
1. 调用自定义的数据层方法:think5\D(数据层名称)->方法(参数);建议在类头部声明use function think5\D,以方便在类中直接使用D()方法
2. 使用连贯操作:think5\D(数据层名称)->where()->...->order()->limit()->select()
3. 不建议在逻辑层中调用其他逻辑层定义的方法
## 标准返回结果
1. 返回数据应使用标准返回方法:think5/out();建议在类头部声明use function think5\out,以便在类中直接使用out()方法
2. think5\out() 有三个参数,第一个参数为返回的提示信息;第二个参数为方法执行后的状态(一般1为操作成功,0为操作失败,当然也可以定其他值以表达更多状态),状态参数默认为0;第三个参数为想要返回的数据集,默认为空数组
3. 如果需要使用数据库记录运行时发生的错误信息,则可使用think5/outlog()进行返回,该函数的参数与返回模式与think5/out()相同,同时它可以记录当前执行的方法名、参数以及出错信息以供后续处理