и для каждой из них по контроллеру. Но из-за того, что методы у всех контроллеров будут одни и те же, нужно как-то избежать дублирования кода.
Пришел в голову вот такой вариант с базовым контроллером, в котором прописываем все общие методы, от которого уже и будут наследоваться остальные.
Нужно ваше мнение, нормальное это решение или нет?
BaseController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
abstract class BaseController extends Controller
{
/**
* @var Model
*/
protected $model;
/**
* Display a listing of the resource.
*
* @return JsonResponse
*/
public function index() : JsonResponse
{
return response()->json($this->model->all());
}
}
FooController.php
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\BaseController;
use App\Models\Foo;
class FooController extends BaseController
{
/**
* FooController constructor.
*/
public function __construct(Foo $model)
{
$this->model = $model;
}
}
🙅♂️
лучше когдогенератор напиши как только начнутся отклонения в поведении для специфичных случаев - код начнёт пахнуть
Немного не понял, что ты имеешь ввиду
Предлагает посмотреть в сторону stub файлов для контроллеров
вот выше ответили да, контроллеры будут в чём то похожи но поддерживать и менять код будет проще
+ лучше не использовать свойство, а сделать абстрактный метод. Меньше поля для совершения ошибок в будущем
понял ладно, буду пробовать
Обсуждают сегодня