php - 如何从控制器中分离请求以使代码更清晰
问题描述
在某些情况下,在我的控制器中,我必须从客户端接收 12 个参数,并且对于每个变量,我必须喜欢以下内容:
$something = $request->get('something');
这在我的控制器中为 10 种方法增加了 100 行代码,我想让我的控制器简短易读,所以我想知道是否有任何方法可以将此代码从我的控制器中分离出来并在我的控制器中接收它们并使用它们在我的方法中,所以我的代码将变得更清晰,更易读
解决方案
创建服务类以将逻辑放入其中:
class IngredientService
{
/**
* @param array $data
*
* @return mixed
*/
public function storeIngredient(array $data)
{
$ingredient = Ingredient::create([
'unit_id' => array_get($data, 'unit_id'),
'price' => array_get($data, 'price'),
'name' => array_get($data, 'name')
]);
return $ingredient;
}
}
然后你在你的控制器中使用它,如下所示:
class IngredientController {
public function store(Request $request, IngredientService $ingredientService)
{
$ingredient = $ingredientService->store($request->toArray())
}
}
推荐阅读
- javascript - 井字游戏 js 没有响应
- javascript - 悬停时文件夹中的随机光标图像
- node.js - 如何在超级代理中发送有效负载
- angular - 角度 @Input 和数据插值在 Web 组件中不起作用
- python - Pandas DataFrame 值到列名和列名到值
- flutter - 在颤动中向左滑动一个容器(如电报的消息框)
- html - 在数字类型输入中使用逗号
- c++ - c++14 中的通用 lambda
- r - 条形图上的比例轴在 R Shiny 中看起来不太好,如何解决?
- python - Flask SQLAlchemy多对多关系:没有属性'_sa_instance_state'