Как сохранить СУХОЙ при создании общих контроллеров в Laravel? - PullRequest
0 голосов
/ 15 марта 2019

Работая над приложением Laravel, я заметил, что создаю методы контроллеров, которые очень похожи. Например, у меня есть модели: Task, Block, Lesson и т. Д. И в каждом контроллере есть очень похожие методы:

public function index()
{
    return new GeneralResource(/model/::all());
}

public function show(/model/ $model)
{
    return new GeneralResource($model);
}

public function store(/model/Request $request)
{
    try {
        $model = /model/::create($request->validated());
        return response()->json(['status' => 'success']);
    } catch (\Exception $e) {
        echo $e->getMessage();
    }
}

public function update(/model/Request $request, /model/ $model)
{
    try {
        $model->update($request->validated());
        return response()->json(['status' => 'success']);
    } catch (\Exception $e) {
        echo $e->getMessage();
    }
}

public function destroy(/model/ $model)
{
    try {
        $model->delete();
        return response()->json(['status' => 'success']);
    } catch (\Exception $e) {
        echo $e->getMessage();
    }
}

Может быть, я мог бы расширить класс Controller с помощью этих методов и передать параметры в качестве защищенных свойств, но я не уверен, как это можно сделать.

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 15 марта 2019

То, что вы ищете, называется Template Method. Вы можете сделать это для каждого метода из контроллеров:)

Дополнительная информация:

https://refactoring.guru/design-patterns/template-method/php/example https://designpatternsphp.readthedocs.io/en/latest/Behavioral/TemplateMethod/README.html

...