如何为评级用户设计服务Laravel



我正在编写一个服务-一个用于设置用户评级的类。

有两种模式: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.phpapi.php路由文件向控制器方法发送请求。

知道了这一点,有时你会希望根据请求的外观来不同地处理控制器逻辑(例如request()->wantsJSON()等(。如果你的方法签名接受静态数量的参数,你更有可能将自己锁定在一个不灵活的模式中。虽然这在短期内可能并不重要,但它将使适应性在未来变得更具挑战性。

最新更新