![]() 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/Internal/ |
<?php declare(strict_types=1); namespace Doctrine\ORM\Internal; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Event\ListenersInvoker; use Doctrine\ORM\Event\PostLoadEventArgs; use Doctrine\ORM\Events; use Doctrine\ORM\Mapping\ClassMetadata; /** * Class, which can handle completion of hydration cycle and produce some of tasks. * In current implementation triggers deferred postLoad event. */ final class HydrationCompleteHandler { /** @var ListenersInvoker */ private $listenersInvoker; /** @var EntityManagerInterface */ private $em; /** @var mixed[][] */ private $deferredPostLoadInvocations = []; /** * Constructor for this object */ public function __construct(ListenersInvoker $listenersInvoker, EntityManagerInterface $em) { $this->listenersInvoker = $listenersInvoker; $this->em = $em; } /** * Method schedules invoking of postLoad entity to the very end of current hydration cycle. * * @param object $entity */ public function deferPostLoadInvoking(ClassMetadata $class, $entity): void { $invoke = $this->listenersInvoker->getSubscribedSystems($class, Events::postLoad); if ($invoke === ListenersInvoker::INVOKE_NONE) { return; } $this->deferredPostLoadInvocations[] = [$class, $invoke, $entity]; } /** * This method should be called after any hydration cycle completed. * * Method fires all deferred invocations of postLoad events */ public function hydrationComplete(): void { $toInvoke = $this->deferredPostLoadInvocations; $this->deferredPostLoadInvocations = []; foreach ($toInvoke as $classAndEntity) { [$class, $invoke, $entity] = $classAndEntity; $this->listenersInvoker->invoke( $class, Events::postLoad, $entity, new PostLoadEventArgs($entity, $this->em), $invoke ); } } }