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);
    }
}

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM