Ответы пользователя по тегу Doctrine ORM
  • Архитектура Entities в Doctrine, Symfony 4 - кто может помочь?

    ghost404
    @ghost404
    PHP Developer
    Есть такая штука как предметная область (Domain). Предметная область состоит из моделей (в Doctrine это Entity), сервисов предметной области и много чего ещё.

    На сколько я понимаю из ваших комментариев, у вас есть 3 интерфейса (UI) которые работают с единой предметной областью. В этом случае не нужно дублировать бизнес-логику под каждый интерфейс. Правильней выделить бизнес-логику в отдельный субъект и реиспользовать его в ваших приложениях с интерфейсами.
    Можно организовать код вашей бизнес-логики в самостоятельный модуль, вынести в пакете Composer и оформить как Symfony Bundle, что вы и сделали.

    Если же у вас есть несколько независемых проектов/сайтов у которых схожая предметная область с небольшими отличиями, то я рекомендую не использовать одну реализацию бизнес-логики на все проекты и рекомендую продублировать код во все проекты.
    Поясню. Поначалу, на маленьких проектах кажется хорошей идеей реиспользовать код, но со временем проекты развиваются и развиваются они как правило независимо друг от друга. С развитием отдельных проектов может, и скорей всего будет, изменяться бизнес-логика соответствующих проектов и вам придется вносить изменения в единый код для всех проектов. Таким образом изменения будут применяться не только в том проекте где они нужны, но и в других проектах которым эти изменения не требуются. Это может нарушать бизнес-логику других проектов, приводить к конфликтам и неожиданным ошибкам. Этот подход имеет право на жизнь, но нужно оценивать риски и всё тщательно взвешивать. Моя практика показала, что ни к чему хорошему это не приводит.
    Ответ написан