![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/mautic.corals.io/vendor/doctrine/orm/src/Event/ |
<?php declare(strict_types=1); namespace Doctrine\ORM\Event; use Doctrine\Common\EventArgs; use Doctrine\Common\EventManager; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Mapping\ClassMetadata; use Doctrine\ORM\Mapping\EntityListenerResolver; /** * A method invoker based on entity lifecycle. */ class ListenersInvoker { public const INVOKE_NONE = 0; public const INVOKE_LISTENERS = 1; public const INVOKE_CALLBACKS = 2; public const INVOKE_MANAGER = 4; /** @var EntityListenerResolver The Entity listener resolver. */ private $resolver; /** * The EventManager used for dispatching events. * * @var EventManager */ private $eventManager; public function __construct(EntityManagerInterface $em) { $this->eventManager = $em->getEventManager(); $this->resolver = $em->getConfiguration()->getEntityListenerResolver(); } /** * Get the subscribed event systems * * @param ClassMetadata $metadata The entity metadata. * @param string $eventName The entity lifecycle event. * * @return int Bitmask of subscribed event systems. * @psalm-return int-mask-of<self::INVOKE_*> */ public function getSubscribedSystems(ClassMetadata $metadata, $eventName) { $invoke = self::INVOKE_NONE; if (isset($metadata->lifecycleCallbacks[$eventName])) { $invoke |= self::INVOKE_CALLBACKS; } if (isset($metadata->entityListeners[$eventName])) { $invoke |= self::INVOKE_LISTENERS; } if ($this->eventManager->hasListeners($eventName)) { $invoke |= self::INVOKE_MANAGER; } return $invoke; } /** * Dispatches the lifecycle event of the given entity. * * @param ClassMetadata $metadata The entity metadata. * @param string $eventName The entity lifecycle event. * @param object $entity The Entity on which the event occurred. * @param EventArgs $event The Event args. * @param int $invoke Bitmask to invoke listeners. * @psalm-param int-mask-of<self::INVOKE_*> $invoke * * @return void */ public function invoke(ClassMetadata $metadata, $eventName, $entity, EventArgs $event, $invoke) { if ($invoke & self::INVOKE_CALLBACKS) { foreach ($metadata->lifecycleCallbacks[$eventName] as $callback) { $entity->$callback($event); } } if ($invoke & self::INVOKE_LISTENERS) { foreach ($metadata->entityListeners[$eventName] as $listener) { $class = $listener['class']; $method = $listener['method']; $instance = $this->resolver->resolve($class); $instance->$method($entity, $event); } } if ($invoke & self::INVOKE_MANAGER) { $this->eventManager->dispatchEvent($eventName, $event); } } }