所有的邏輯都放到M層,M層會臃腫。
所有的邏輯都放到C層,C層會臃腫。
這個時候需要一個中間層,Service層。
Service可以傾向於Model層,比如處理訂單查詢相關的邏輯。
Service可以傾向於常用的操作,比如計算薪水。或者驗證各種郵件等等。
Service也可以介於1,2繼續封裝出更復雜的功能。
C層調用Service層,能夠少寫很多代碼。
下面是Service的代碼。
<?php
/**
* Created by PhpStorm.
* User: jiqing
* Date: 18-12-21
* Time: 下午8:49
*/
namespace app\common\service;
// 服務層,介於C層與M層之間
/** 根據上面的分析,Service夾在C層和M層中間,從邏輯上大致划分為3大類:
### model側的Service:也就是封裝每個model與業務相關的通用數據接口,比如:查詢訂單。(我認為:訪問遠程服務獲取數據也應該歸屬於這一類Service)
### 中間的Service:封裝通用的業務邏輯,比如:計算訂單折扣(會用到1中的Service)。
### controller側的Service:基於1、2中的Service進一步封裝對外接口的用戶業務邏輯。
**/
use app\common\model\UserModel;
class UserService
{
public function get_user_info($id) {
$user = new UserModel();
return $user->where('id',$id)->find();
}
}
下面是使用Service的代碼。
<?php
namespace app\api\controller;
use app\common\service\UserService;
use func\Http;
use think\Db;
use think\db\Where;
class TestController extends CommonController {
public function _initialize(){
parent::_initialize();
}
public function test_user() {
$user_service = new UserService();
$user_info = $user_service->get_user_info(1);
halt($user_info);
}
}
有點意思。這大概就是設計模式吧。靈活的運用命名空間,靈活的創造類。
