Symfony: отправка запроса другому пакету в том же приложении для получения данных

У меня есть небольшая дилемма, у меня есть приложение Symfony2, и в нем я собрал пакет, который представляет собой просто слой REST Api для моей базы данных.

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

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

В качестве примера напишу пример:

Пакет A содержит API REST, один из ресурсов, который он предоставляет, это «Person», который позволяет GET, POST, PUT, DELETE. Этот ресурс сопоставляется с таблицей базы данных.

С другой стороны, есть Bundle B, который должен выполнить некоторые задачи и, наконец, обновить некоторых пользователей в моей базе данных. Я не хочу копировать свой Person Entity из пакета api в этот пакет для выполнения обновления.

Что бы вы сделали в такой ситуации?

1

Решение

Я думаю, что вы должны общаться между пакетами, используя сервисы (Dependency Injection).

Документы контейнера услуг Symfony2

Если вы регистрируете сервис в одном пакете и называете его «myDataLayerService», вы можете внедрить его в сервисы другого пакета (как и любые другие сервисы — сервис запросов, диспетчер сущностей, маршрутизатор и т. Д.) Или вы можете получить его в контроллере. очень легко
$myDBLayer = $this->get("myDataLayerService");
И тогда вы вызываете любую публичную функцию, созданную в вашем сервисе.

$myDBLayer->persistObjectToDatabase($veryNiceObject);

TL; DR: зарегистрированные службы Symfony в одном пакете доступны в любом другом пакете.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector