MVC結構之Service概念
阿新 • • 發佈:2018-12-21
所有的邏輯都放到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); } }
有點意思。這大概就是設計模式吧。靈活的運用名稱空間,靈活的創造類。