и для каждой из них по контроллеру. Но из-за того, что методы у всех контроллеров будут одни и те же, нужно как-то избежать дублирования кода.
                  
                  
                  Пришел в голову вот такой вариант с базовым контроллером, в котором прописываем все общие методы, от которого уже и будут наследоваться остальные.
                  
                  
                  Нужно ваше мнение, нормальное это решение или нет? 
                  
                  
                  
                  
                  
                  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 файлов для контроллеров
вот выше ответили да, контроллеры будут в чём то похожи но поддерживать и менять код будет проще
+ лучше не использовать свойство, а сделать абстрактный метод. Меньше поля для совершения ошибок в будущем
понял ладно, буду пробовать
Обсуждают сегодня