Вообще-то я про интерфейс для репозитория и написал в предыдущем сообщении. "Репозиториев, реализующих общий интерфейс, может быть несколько. Например, один для MySQL, второй - для PostgreSQL, третий - вообще для какого-то NoSQL-хранилища". Только вот интерфейс как раз-таки не решает то, что я описал.
Потому что репозиторий, как я уже сказал, это не сервис. Если ты считаешь иначе - твое право, переубеждать не буду. :)
Автокомплит легко добавляется с помощью phpdoc, который используются в php повсеместно
Насчет этого согласен, но при наличии кучи аргументов в контроллере этот плюс становится не таким весомым.
А где ты делаешь тогда валидацию и кеширование? Не в сервисном слое, надеюсь?Кэширование? На стороне пхп? Зачем?
Ок, но я считаю иначе. Я не говорю про сервисы, все методы которых сплошь прокси, но если из 10 методов сервиса 2 будет проксями, то не вижу в этом особой проблемы.
В каждом контроллере нужен, как минимум, кеш, фабрика валидаторов, фабрика респонсов (чтобы ответы API были в едином формате) - это уже 3 параметра (сервиса) в конструктор. Ну, допустим, еще пара репозиториев, как ты предлагаешь, и пара сервисов. Итого уже 7 параметров на контроллер, и это я по-минимуму взял. Удобно? На мой взгляд, нет.
Я раньше тоже так считал, но теперь не соглашусь, потому что контроллер вполне может требовать обращение к нескольким сервисам. Если их пробрасывать по отдельности через конструктор, то он вполне может принимать аж за десяток параметров. Если их два-три, пять, то это ок, но иногда их значительно больше. Выход - делить контроллер? Но ведь не всегда это логично.