Как поделиться моделью Symfony2 с несколькими проектами

Мы создаем SaaS, который контролирует определенные активы. Это означает, что он берет данные, сохраняет их и отображает на веб-интерфейсе.

Для этого у нас есть несколько компонентов, которые мы создали с /, переходим к Symfony2:

  • внешнее веб-приложение, где пользователи могут просматривать свои данные
  • базовое административное веб-приложение, в котором мы создаем новые мониторы, пользователей и т. д.
  • API
  • приложение, которое извлекает полученные данные из очереди и помещает их в нашу базу данных (теперь это отдельный скрипт, но я думаю о том, чтобы переработать это как команду Symfony, вызываемую cron)

Все эти четыре приложения имеют одну и ту же модель : нашу основную базу данных, в которой хранятся все пользователи, мониторы и данные.

Мой вопрос: как мне структурировать эти проекты в Symfony2?

  1. Создать отдельный пакет, который содержит объекты для моей базы данных, и включить эти четыре проекта в эти объекты и работать с ними?
  2. Можно ли создать каталог «model» в моей папке приложений Symfony, которая используется всеми связями в каталоге my / src?
  3. Какой-то другой, более чистый способ сделать это?

Вариант 1 кажется немного странным, поскольку для меня, по моему мнению, требуется маршрутизация, представления, контроллеры и т. Д. Использование его для объектов просто немного странно.

Вариант 2 выглядит хорошо, так как папка / приложение считается «общедоступной» в любом случае для всего, что находится в папке / src (поскольку, например, там также находятся параметры). Однако там нет «модели», и я не уверен, что это должно быть?

Я понимаю, что для Symfony 2 очень мало «лучших практик», так как это совершенно новый. Но я хотел посмотреть, есть ли какие-либо практики, более предпочтительные, чем другие, по вашему мнению.

Любая обратная связь более приветствуется. Заранее спасибо,

Dieter

То, что я сейчас делаю, – это первый вариант: создать отдельный пакет для ваших объектов. Вот где я храню светильники, сущности, формы и связанные с сущностью тесты.

У пакета нет необходимости иметь маршрутизацию, контроллеры, представления и т. Д. На самом деле я видел планку, и все, что она делает, это ресурсы корабля-css с ним, поэтому их можно легко использовать повторно в проектах.

Что касается добавления моделей в каталог приложения … Мне это не понравится. Я вижу каталог приложений как место, где должна быть вся конфигурация. Даже если вы можете переопределять представления в app/Resources , всякий раз, когда я хочу переопределить что-то, я создаю новый пакет.

Я не использовал эту технику самостоятельно в приложении symfony2 реального мира, но это указатель, когда вы просили получить обратную связь.

Контейнер службы, похоже, является способом Smyfony2, чтобы предоставлять услуги глобально. Таким образом, в вашем случае объекты доступа к модели будут определяться как сервисы, как описано в предоставленной ссылке, а затем могут быть использованы из любого пакета.

Теперь, в каком пакете идут объекты службы? Мы можем поместить их в отдельный пакет, поскольку они распределены между другими пакетами. Тем не менее, я полагаю, что модель не была бы абсолютно симметричной для всех пучков, поэтому мы можем поместить общую модель в отдельный пучок и поместить узлы определенных объектов в сам комплект. Затем методы инъекций, обсуждаемые в приведенной выше ссылке, могут быть использованы для обеспечения полной модели, специфичной для каждого пучка.

Это, по-видимому, обеспечивает максимальную де-мутацию.

Меня тоже интересует любая обратная связь, так как это общий сценарий проектирования.

С уважением.