slavcodev писал(а): ↑2017.04.06, 13:10
Я бы посоветовал отказаться от методов которые возвращают не явные данные
Что значит "не явные"? Чтобы не быть голословным, вот пример сигнатуры метода из интерфейса:
Код: Выделить всё
interface IUserRepository
{
// ...
public function ofId(UserId $id): ?User;
}
Данная сигнатура, жестко регламентирует возвращаемые данные "null|User", тут все явно, или вы о чем-то другом?
slavcodev писал(а): ↑2017.04.06, 13:10
Это и есть предназначение репозитория, сконцентрировать работу со списком сущностей одного типа.
Именно, но учитавая кол-во исключений, которые нужно бросить, кол-во этих методов еще возрастет в несколько раз.
slavcodev писал(а): ↑2017.04.06, 13:10
Дублирование логики (проверки бана у пользователя) в кучи сервисах хуже/неудобнее чем репозиториях, имплементаций которых на самом деле не так уж и много.
Ранее в этой ветке был предложен способ, который позволяет избавиться от дублирования: вынести логику проверки бана в отдельный фетчер (доменный сервис).
slavcodev писал(а): ↑2017.04.06, 13:10
но не хочу твое предпочтения менять. Каждому свое, кому-то тортики нравится, а кто-то их терпеть не может.
Если у вас будет время, я был бы признателен, если бы вы смогли описать ваш подход.