單一職責
模型是用來和資料庫打交道的,基本只負責增刪改查,所以相關業務邏輯,擴充套件出了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 協議》,轉載必須註明作者和本文連結