Bravo3\Orm\Services\EntityManager::getDispatcher PHP Method

getDispatcher() public method

Get the event dispatcher, lazy-loading
public getDispatcher ( ) : EventDispatcher
return Symfony\Component\EventDispatcher\EventDispatcher
    public function getDispatcher()
    {
        if ($this->dispatcher === null) {
            $this->dispatcher = new EventDispatcher();
        }
        return $this->dispatcher;
    }

Usage Example

Beispiel #1
0
 /**
  * @dataProvider entityManagerDataProvider
  * @param EntityManager $em
  */
 public function testIntercepts(EntityManager $em)
 {
     $em->getDispatcher()->addListener(Event::PRE_RETRIEVE, function (RetrieveEvent $event) {
         // Return something completely different instead
         $event->setReturnValue(new Article());
         $event->setAbort(true);
     });
     $em->getDispatcher()->addListener(Event::POST_PERSIST, function (PersistEvent $event) {
         /** @var Product $entity */
         $entity = $event->getEntity();
         $this->assertTrue($entity instanceof Product);
         $entity->setName('Persisted Product');
     });
     $product = new Product();
     $product->setId(111)->setName('New Product')->setCreateTime(new \DateTime());
     $em->persist($product);
     $em->flush();
     $this->assertEquals('Persisted Product', $product->getName());
     $retrieved = $em->retrieve(Product::class, 111);
     $this->assertTrue($retrieved instanceof Article);
 }