Как правильнее работать в сервисом, контрактом?

Помогите разобраться с контрактами (интерфейсами) и провайдерами.

Хочу сделать на их основе подгрузку каталога скажем брендов или скажем городов

Я делаю следующее

1) Создал контракт Contracts/Catalog.php
interface Catalog {
    public function show();
}


2) Создал два сервиса Services/Catalog/BrandService.php и Services/Catalog/CityService.php
class BrandService implements Catalog {
    public function show() {
        dd('Каталог брендов');
    }
}

class CityService implements Catalog {
    public function show() {
        dd('Каталог городов');
    }
}


И вот дальше у меня тупняк. Хотел создать общий контроллер Http/Controllers/CatalogController.php
class CatalogController extends Controller {
    function showBrand(BrandService $brand) {
      return $brand->show();
    }
   
   function showCity(CityService $city) {
      return $city->show();
    }
}


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

И ловить потом

Route::get('/catalog/city', [BaseCatalogController::class, 'city']);
Route::get('/catalog/brand', [BaseCatalogController::class, 'brand']);


Направьте, пожалуйста, на правильный подход в реализации :)
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 1
Вы странным образом используете интерфейсы.

Сначала опишите общий контроллер, исходя из требований которого сформируйте интерфейс, а потом уже занимайтесь его имплементацией.

А то выходит использование интерфейсов ради использования интерфейсов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽