Привет всем.. интересный вопрос на который я толком не нашел нигде ответ, коллеги по разному все говорят))) предлагаю обсудить.. все что написано - написано для примера))
1. Имеем интерфейс UserRepository
который объявляет метод findByEmail(string): User
2. Имеем интерфейс AllModelRepository
в котором объявлен метод all(): Collection
3. Имеем интерфейс FindModelRepository
с методом findById(int $id);
есть сущности где нужен поиск по id, есть сущности где не нужен.. поэтому такая вот схема..
4. Имеем реализацию OrmUserRepository где должны быть реализованы методы
findByEmail, all, findById
5. Имеем резолвер RepositoryResolver в котором есть метод resolve который в качестве аргумента принимает имя класса и возвращает репозиторий этой сущности.. (ну так надо))))
Как правильно имплементировать методы в наш класс?
Вариант 1:
интерфейс UserRepository расширяем AllModelRepository, FindModelRepository
Класс OrmUserRepository имплементируем от UserRepository
Вариант 2:
Класс OrmUserRepository имплементируем от UserRepository, AllModelRepository, FindModelRepository
Какой правильный?) Плюс иногда надо проверять от чего имплементирован класс...
первый вариант вроде как лучше.. но он затрудняем проверку родительских имплементаций)
1. Имеем интерфейс UserRepository
который объявляет метод findByEmail(string): User
2. Имеем интерфейс AllModelRepository
в котором объявлен метод all(): Collection
3. Имеем интерфейс FindModelRepository
с методом findById(int $id);
есть сущности где нужен поиск по id, есть сущности где не нужен.. поэтому такая вот схема..
4. Имеем реализацию OrmUserRepository где должны быть реализованы методы
findByEmail, all, findById
5. Имеем резолвер RepositoryResolver в котором есть метод resolve который в качестве аргумента принимает имя класса и возвращает репозиторий этой сущности.. (ну так надо))))
Как правильно имплементировать методы в наш класс?
Вариант 1:
интерфейс UserRepository расширяем AllModelRepository, FindModelRepository
Класс OrmUserRepository имплементируем от UserRepository
Вариант 2:
Класс OrmUserRepository имплементируем от UserRepository, AllModelRepository, FindModelRepository
Какой правильный?) Плюс иногда надо проверять от чего имплементирован класс...
первый вариант вроде как лучше.. но он затрудняем проверку родительских имплементаций)