Ответы пользователя по тегу ООП
  • Как правильно реализовать архитектуру для связанных объектов с сервисом, коллекцией и репозиторием?

    DeFacto
    @DeFacto
    глубоко ушел в абстракции.

    1. Кто и для чего будет использовать методы getTags(), getCountry() ?

    по логике допустим, у тебя интерфейс ArticleContract добавляет функции getTags()
    лучше тогда создать интерфейс TagsContract
    так как потом требования могут изменится, и тэги нужны будут для News

    2. Зачем на каждый чих делать интерфейсы? Для Service я вообще не вижу смысла. Или ты собираешься подменять где-то ArticleService другим ArticelService который должен так же возвращать ArticleCollectionContract?

    3. самый простой вариант для начала
    оставляем interface PostContract
    по-необходимости для функционала делаем interface TagContract
    оставляем PostRepostory, PostService
    PostRepostory расширяем чтобы он мог возвращать объекты по типу (например
    $postRepostory->getNews(), $postRepostory->getArticles() )
    В тех местах где тебе реально нужен доп функционал типа getCountry - создаешь отдельный интерфейс interface CountryContact
    и далее в тех местах где будет зависимость встраиваешь CountryContact
    в итоге class News extends Post implements CountryContact, TagContract
    Ответ написан
    Комментировать