laravel service层分离和使用
传统的项目的后端模块定义结构通常是mvc架构,很清晰的分离出来了业务层C,数据层M,展示层V。同时因为模块分离导致互相调用数据需要了解各个模块的功能,而且使得互相调用变的复杂,通过分离出来一个单独提供服务的模块,业务层需要的数据可以在服务层做好业务处理,返回给调用方,这样结构更加清晰。
给出一个结构如下:(注意服务层service)
├── Console
│ ├── Commands
│ │ ├── Data.php
│ │ └── SyncData.php
│ └── Kernel.php
├── Exceptions
│ └── Handler.php
├── Http
│ ├── Controllers
│ │ ├── Api
│ │ │ ├── UserController.php
│ │ ├── Auth
│ │ │ ├── LoginController.php
│ │ ├── Controller.php
│ │ └── IndexController.php
│ ├── Kernel.php
│ └── Middleware
│ ├── EncryptCookies.php
│ ├── RedirectIfAuthenticated.php
│ ├── TrimStrings.php
│ └── VerifyCsrfToken.php
├── Jobs
│ ├── Programs.php
├── Listeners
│ └── Listener.php
├── Models
│ └── Version.php
├── Providers
│ ├── AiServiceProvider.php
├── Rpc
│ ├── RpcBase.php
│ ├── RpcClient.php
│ └── RpcServer.php
├── Services
│ ├── CommonService.php
│ ├── ConfService.php
│ ├── RPC
│ │ ├── RpcServerService.php
│ │ └── RpcClientService.php
│ ├── RedisService.php
│ ├── CacheService.php
│ └── order.txt
├── Traits
│ ├── AliPay.php
│ ├── CalculateGpa.php
│ ├── CalculateLuggage.php
│ ├── Esearch.php
│ ├── FlightWare.php
│ ├── GoogleMap.php
│ ├── OssClient.php
│ ├── SendSms.php
│ ├── VideoStreaming.php
│ ├── WechatPay.php
│ └── YahooWeather.php
└── helpers.php
单独分离出来服务层,好处如下:
- 服务层完成业务的处理;
- 控制器做业务转发和参数获取,模板调用,渲染。
- model层做数据获取,各个model层做关联,rpc业务等
同时在文件目录上又添加了Traits工具,做一些工具,服务单独分离,容易管理。