ThinkPHP 5 模型使用历程 - 单一职责
模型是用来和数据库打交道的,基本只负责增删改查,所以相关业务逻辑,扩展出了 logic
层
数据处理#
这部分方法全是静态调用,依赖模型,但不依赖模型数据LTErpCustomerWallet::create(1);
abstract class LTBase
{
/**
* @return string
* @deprecated
*/
public static function getModelClass(): string
{
$class = str_replace('logic\\table\\L', 'model\\table\\M', static::class);
if (!class_exists($class)) {
LTLogExceptionLogic::create(new ELogicTable('模型类不存在:' . $class));
return 'etop\model\table\MTBase';
}
return $class;
}
/**
* 通过ID快速获取模型对象
*
* @param int $id
* @deprecated
* @return MTBase
*/
public static function selectInfoById(int $id = 0)
{
$class = static::getModelClass();
/** @var MTBase $class */
return $class::findOrEmpty($id);
}
}
/**
* Class LTErpCustomerWallet
* @method MTErpCustomerWallet selectInfoById(int $id) static
*/
class LTErpCustomerWallet extends LTBase
{
public static function create(int $id){
$info = new MTErpCustomerWallet();
$info->id = $id;
$info->save();
}
}
对象处理#
这部分是针对某个模型对象,做数据处理new LMSuperAdmin($this->admin)->getMenuList();
/**
* 通过模型实例化的逻辑层
* Class LTBase
*/
abstract class LMBase
{
/**
* 错误码
* @var string
*/
protected $errorCode = 0;
/**
* 错误信息
* @var string
*/
protected $errorMessage = '';
/**
* 状态
* @var string
*/
protected $status = '';
/**
* 模型对象
* @var MTBase
*/
protected $model;
/**
* Base constructor.
*
* @param MTBase $model
*
* @throws ELogicModel
*/
public function __construct(MTBase $model = null)
{
if ($model) {
$this->model = $model;
} else {
$class = static::MODEL_CLASS ?: str_replace('logic\\model\\LM', 'model\\table\\MT', static::class);
if (class_exists($class)) {
$this->model = new $class();
} else {
throw new ELogicModel('模型类不存在:' . $class);
}
}
}
/**
* 获取模型
* @return MTBase
*/
public function getModel()
{
return $this->model;
}
/**
* 设置模型
*
* @param MTBase $model
*
* @return LMBase
*/
public function setModel(MTBase $model)
{
$this->model = $model;
return $this;
}
/**
* 获取错误码
* @return string
*/
public function getErrorCode()
{
return $this->errorCode;
}
/**
* 获取错误信息
* @return string
*/
public function getErrorMessage()
{
return $this->errorMessage;
}
/**
* 获取错误提示信息
* @return string
*/
public function getErrorInfo()
{
return $this->errorCode . '-' . $this->errorMessage;
}
}
/**
* Class LMSuperAdmin
*
* @method MTSuperAdmin getModel()
*/
class LMSuperAdmin extends LMBase
{
/**
* @var MTSuperAdmin
*/
protected $model;
/**
* 获取用户拥有的菜单列表
* @return array
* @throws ELogicTable
*/
public function getMenuList(){
if($this->model->super_role_id === 0){
$menu_ids = '-1';
}else{
$menu_ids = $this->model->super_role->menu_ids;
}
$list = LTSuperMenu::getMenuList($menu_ids);
return $list;
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: