Laravel 框架核心:Service 层封装,让代码更优雅
一、为什么需要 Service 层?
Laravel 默认的 MVC 架构中,Controller 容易 “臃肿”:
一个接口的逻辑(参数验证、业务处理、数据入库、异常处理)全部写在 Controller,代码行数超百行;
相同业务逻辑(如用户注册、订单创建)在多个 Controller 重复编写,维护成本高;
Controller 既处理请求响应,又处理业务逻辑,违反 “单一职责原则”。
解决方案:引入 Service 层,分层职责:
Controller:仅接收请求、调用 Service、返回响应;
Service:封装核心业务逻辑;
Model:仅处理数据交互(查询、入库、关联)。
二、Service 层实战:用户注册功能
1. 创建 Service 类
在app/Services目录下创建UserService.php(无该目录则手动创建):
2. Controller 调用 Service
修改app/Http/Controllers/Auth/RegisterController.php:
3. 路由配置
在routes/api.php中添加路由:
三、Service 层进阶技巧
事务处理:涉及多表操作时,在 Service 中开启事务:
异常统一捕获:创建自定义异常类(如
BusinessException),在 Service 中抛出,在app/Exceptions/Handler.php中统一处理,避免 Controller 中重复写 try-catch。Service 复用:多个 Controller 可调用同一个 Service 方法,如
UserService的getUserInfo()可在个人中心、订单详情等接口中复用。