gpt4 book ai didi

php - 领域驱动设计 - 聚合 - EventPublisher with Doctrine

转载 作者:行者123 更新时间:2023-12-05 04:15:35 24 4
gpt4 key购买 nike

我想问一下在聚合中使用 EventPublisher。

class SomeAggregate
{

private $eventPublisher;

public function __construct(EventPublisher $eventPublisher)
{
$this->eventPublisher = $eventPublisher;
}


}

当我创建 SomeAggregate 时,我将 EventPublisher 传递给构造函数,一切正常。

但是当我从数据库中检索这个对象时呢?Doctrine 根据表中的字段重建对象,将跳过 EventPublisher。

如何让 Doctrine 每次从数据库中检索 SomeAggregate 时都注入(inject) EventPublisher?

如果存在的话,我的首选方法是将 $eventPublisher 属性映射到 EventPublisher 类。

最佳答案

使用 Doctrine 事件监听器

services:
my.listener:
class: AppBundle\EventListener\EventPublisherInjector
arguments: [@event_publisher_service_id]
tags:
- { name: doctrine.event_listener, event: postLoad }

AppBundle\EventListener\EventPublisherInjector 中:

public function __construct(EventPublisher $eventPublisher)
{
$this->eventPublisher = $eventPublisher;
}

public function postLoad(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
if ($entity instanceof SomeAggregate) {
$entity->setEventPublisher($this->eventPublisher);
}
}

http://symfony.com/doc/current/cookbook/doctrine/event_listeners_subscribers.html

http://doctrine-orm.readthedocs.org/en/latest/reference/events.html#postload

关于php - 领域驱动设计 - 聚合 - EventPublisher with Doctrine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31887314/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com