1. 程式人生 > >MVC結構之Service概念

MVC結構之Service概念

所有的邏輯都放到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);
    }
}

有點意思。這大概就是設計模式吧。靈活的運用名稱空間,靈活的創造類。