Symfony和条令在不同项目上的沟通
该应用程序分为几个项目 该数据库是一个单独的项目和使用原则(不含Symfony) API是一个symfony项目,它使用数据库项目作为依赖项(供应商) 我想通过聆听条令事件来创建Symfony级别的事件,但是Symfony不知道任何条令,因为它在其项目之外 你有什么想法吗Symfony和条令在不同项目上的沟通,symfony,doctrine-orm,doctrine,Symfony,Doctrine Orm,Doctrine,该应用程序分为几个项目 该数据库是一个单独的项目和使用原则(不含Symfony) API是一个symfony项目,它使用数据库项目作为依赖项(供应商) 我想通过聆听条令事件来创建Symfony级别的事件,但是Symfony不知道任何条令,因为它在其项目之外 你有什么想法吗 谢谢如果我理解正确,您有两个Symfony应用程序-第一个带有数据库,第二个通过API使用此数据库。不可能在第二个应用程序中实现条令事件侦听器,因为它不知道第一个应用程序的条令实体。但是,您可以通过使用解决此问题。第一个应用程
谢谢如果我理解正确,您有两个Symfony应用程序-第一个带有数据库,第二个通过API使用此数据库。不可能在第二个应用程序中实现条令事件侦听器,因为它不知道第一个应用程序的条令实体。但是,您可以通过使用解决此问题。第一个应用程序将在每个条令事件上发送消息,第二个应用程序将订阅并处理这些消息 像这样的。 第一个应用程序端
<?php
declare(strict_types=1);
namespace App\EventListener;
use App\Entity\User;
use App\Message\UserChangedNotification;
use Doctrine\Persistence\Event\LifecycleEventArgs;
use Symfony\Component\Messenger\MessageBusInterface;
class UserChangedNotifier
{
private MessageBusInterface $bus;
public function __construct(MessageBusInterface $bus)
{
$this->bus = $bus;
}
public function postUpdate(User $user, LifecycleEventArgs $event): void
{
$this->bus->dispatch(new UserChangedNotification($user));
}
}
<?php
declare(strict_types=1);
namespace App\MessageHandler;
use App\Message\UserChangedNotification;
use Symfony\Component\Messenger\Handler\MessageHandlerInterface;
class UserChangedNotificationHandler implements MessageHandlerInterface
{
public function __invoke(UserChangedNotification $message)
{
// ... do something with the message, e.g. dispatch Symfony event
}
}
感谢您的回复,包含数据库的项目不是Symfony项目。这种方法也可以,因为您可以使用一些常见的消息代理,如RabbitMQ异步连接第一个和第二个应用程序。如果第一个应用程序也是PHP(我假设是,因为它使用的是条令),那么就可以使用Symfony Messanger组件作为独立的解决方案。