使用Laravel时,应将自定义方法/函数放在哪里?

时间:2019-04-03 01:29:35

标签: php laravel

可以说,如果我将函数放入控制器或模型中,则我创建了一个名为activateAuction的自定义函数。如果将其放在控制器中,我将在控制器中编写整个功能。如果将函数放入模型中,则将从控制器中调用函数。我想编写简洁的代码哪种方法正确?

3 个答案:

答案 0 :(得分:0)

控制器收到Request并返回Response。那是他们唯一的工作。让他们保持瘦。瘦控制器和胖模型。我不知道activateAuction的作用。也许应该在Repository中。

答案 1 :(得分:0)

确保不必将其放置在控制器中,将其保留在模型中或考虑使用存储库模式,这将使您的代码保持整洁。

答案 2 :(得分:0)

Controller仅应负责接收请求并做出响应。它将验证并转换将参数传递给函数的请求到代码中的某处。

您可以使用Repository Pattern,也可以只放入模型

您可以开始在Controller中编写代码,但是当发现它很冗长或代码变得越来越复杂时, 重复的。您可以重构代码并使它们成为函数,然后在Controller中调用该函数。

示例:


class UserController {
  ...

  public function eatCake(Request $request, Cake $cake) {

    // Validate Request
    $data = $this->validate($request, [
      'portion' => 'required|numeric',
    ]);

    // pass params
    Auth()->user()->eat($cake, $data['portion']);

    // Respond to user
    return response('OK');
  }
}

class User extends Authenticatable {
  ...
  public function eat(Cake $cake, $portion) : Consume
  {
    // Your logic
    return $this->consumes()->create([
      'cake_id' => $cake_id,
      'portion' => $portion
    ]);
  }
}