修改理由:

缺少一个参数

详细描述:

new FoodIsHealthy($food),

应该是

new FoodIsHealthy(user(), $food),

此投稿已在 4年前 合并。

内容修改:

红色背景 为原始内容

绿色背景 为新增或者修改的内容

OldNewDifferences
1  
21![file](https://cdn.learnku.com/uploads/images/201805/31/1/FYDTHGIoXv.jpeg?imageView2/2/w/1240/h/0)
32
43Laravel 的自由度超越了许多前期框架,这才是它真正的力量来源,但是伴随力量而来的是职责。
 
76
87在本文中,我将概述一种更有效的方法,以避免我们在编写业务逻辑的时候经常会犯的错误。
98
10 
 9
1110
1211### 业务逻辑究竟是什么?
1312
 
7473
7574事情可能非常容易失控...
7675
77 
 76
7877### 让我们整理一下思路
7978
8079这样编写控制器不是很好吗?
 
8382public function eat(Food $food)
8483{
8584   $this->business([
86        new FoodIsHealthy($food),
 85       new FoodIsHealthy(user(), $food),
8786       new UserHasEnoughCaloriesRemaining(user(), $food),
8887   ]);
8988```
 
101100
102101将该逻辑的操作执行委托给另一个类会给我们带来更好的可测试性,*这在执行业务逻辑时是至关重要的*。
103102
104 
 103
105104### 让我们开始吧!
106105
107106首先我们定义一个业务对象:
 
141140
142141> 我会建议添加 `passes()` 和 `message()` 方法来为这些对象添加接口契约。
143142
144 
 143
145144接下来,让我们编写一个方法来处理基类控制器中的所有业务对象:
146145
147146```