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

Ссылка скопирована
1 ответ

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

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

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

1) Создал контракт Contracts/Catalog.php

interface Catalog {     public function show(); }

interface Catalog { public function show(); }

2) Создал два сервиса Services/Catalog/BrandService.php и Services/Catalog/CityService.php

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

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

class CityService 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();     } }

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']);

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

Направьте, пожалуйста, на правильный подход в реализации :)

Дополнительно:

Как бы теоретически контракты используются для того что бы у вас код который работает с этим контрактом не парился с какой конкретно реализацией он работает.
То бишь - есть смысл в таком коде

function showBrand(Catalog $service) {       return $service->show();     }

function showBrand(Catalog $service) { return $service->show(); }

Тогда да - туда может прилететь CityService, BrandService - но методу похрен он четко знает что есть метод show потому что они выполняют контракт Catalog

В случае с этим

class CatalogController extends Controller {     function showBrand(BrandService $brand) {       return $brand->show();     }        function showCity(CityService $city) {       return $city->show();     } }

class CatalogController extends Controller { function showBrand(BrandService $brand) { return $brand->show(); } function showCity(CityService $city) { return $city->show(); } }

какая хрен разница методу showCity что переданный параметр имплементирует контракт Catalog? Ему от этого ни горячо ни холодно, он ждет конкретную реализацию и будет работать с ней как с отдельной реализацией. В чем вообще причина связывать CityService и BrandService одним контрактом?

Второе. сильное подозрение что вы в метод show собираетесь захерачить работу с view. А нахрена?

Ответы:

Вы странным образом используете интерфейсы.

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

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

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Стас DB Ответ

Работа с контрактами в сервисной сфере является крайне важным аспектом, который влияет на качество предоставляемых услуг и уровень доверия клиентов. Для того чтобы работать правильно с контрактами в сервисной сфере, необходимо придерживаться нескольких ключевых принципов.

Во-первых, необходимо тщательно изучить контракт перед его подписанием. Важно понимать все условия соглашения, права и обязанности сторон, а также сроки выполнения работ. Не стоит подписывать контракт, если есть какие-либо сомнения или неясности. Лучше обратиться к юристу или специалисту по контрактам для консультации.

Во-вторых, необходимо строго соблюдать все условия контракта в процессе выполнения работ. Это касается как соблюдения сроков, так и качества предоставляемых услуг. Нарушение условий контракта может привести к юридическим последствиям и потере доверия со стороны клиентов.

Также важно учитывать возможность изменения условий контракта в процессе работы. Если возникают непредвиденные обстоятельства или изменения в требованиях клиента, необходимо провести переговоры и договориться о внесении изменений в контракт. Важно, чтобы все изменения были оформлены в письменной форме и подписаны обеими сторонами.

Наконец, необходимо вести документацию по всем контрактам и соблюдать их архивацию. Это поможет избежать споров и недоразумений в будущем, а также обеспечит защиту интересов вашей компании.

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

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно