设计模式以重用具有不同实例的代码

时间:2014-09-30 14:29:14

标签: php design-patterns laravel design-principles laravel-5

我正在开发API,并且在控制器中,indexstoreshowupdatedestroy方法都是相同的除了正在使用的模型。

你会如何实现这个?

我正在考虑ActionRepository我在哪里创建这些方法并以某种方式解析模型。我不知道如何才能到达模型..

真的很感激对此的一些反馈;)!

1 个答案:

答案 0 :(得分:2)

你可以这样做:

abstract class BaseController extends LaravelController {
  protected $repository; // or $model or whatever you need

  public function index() { // your logic }
  public function show($id) {
    // your logic here, for example
    return $this->repository->find($id);
    // or
    return $this->model->find($id);
  }
  public function create() { // your logic }
  public function store() { // your logic }
  public function edit($id) { // your logic }
  public function update($id) { // your logic }
  public function destroy($id) { // your logic }
}

class SomeSolidController extends BaseController {
  public function __construct(SomeRepositoryInterface $repository)
  {
    $this->repository = $repository;
  }
}