我正在编写一个服务-一个用于设置用户评级的类。
有两种模式:User,Rate。多对多关系。
评级创建方法描述如下:
function create(Order $order, User $user, User $user_rated, Rating $rating, $rate) {
return OrderRating::create(["user_id" => $user->getId(), 'order_id' => $order->getId(), 'rating_id' => $rating->getId(), 'rate' => $rate]);
}
其中:
$order; // additional information for evaluation
$user; // who is rating
$user_rated; // who is rated
$rating; // rating model
$rate; //the rating itself from 1 to 5
我被函数中大量的参数弄糊涂了。还有一种诱惑是只将Request$Request(一个对象(传递给创建函数:
function create(Request $request) {
// do everything else
}
但在这种情况下,功能就变得没有人情味了。另一方面,我不想把控制器搞砸。
考虑什么是可持续的长期。对于控制器方法,通常最好的做法是处理作为arg传递或通过辅助函数request()
访问的Request
。这是因为您通常会直接从web.php
或api.php
路由文件向控制器方法发送请求。
知道了这一点,有时你会希望根据请求的外观来不同地处理控制器逻辑(例如request()->wantsJSON()
等(。如果你的方法签名接受静态数量的参数,你更有可能将自己锁定在一个不灵活的模式中。虽然这在短期内可能并不重要,但它将使适应性在未来变得更具挑战性。