From 08be905fc38ced42cb7b3de20ec33dd256b346ef Mon Sep 17 00:00:00 2001 From: Darien Hager Date: Tue, 5 May 2015 13:52:08 -0700 Subject: [PATCH] Refactor LoadClassMetadataEventArgs to ensure it contains an EntityManager --- .../ORM/Event/LoadClassMetadataEventArgs.php | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/lib/Doctrine/ORM/Event/LoadClassMetadataEventArgs.php b/lib/Doctrine/ORM/Event/LoadClassMetadataEventArgs.php index 5bebf7541..1a43e0890 100644 --- a/lib/Doctrine/ORM/Event/LoadClassMetadataEventArgs.php +++ b/lib/Doctrine/ORM/Event/LoadClassMetadataEventArgs.php @@ -20,6 +20,8 @@ namespace Doctrine\ORM\Event; use Doctrine\Common\Persistence\Event\LoadClassMetadataEventArgs as BaseLoadClassMetadataEventArgs; +use Doctrine\ORM\Mapping\ClassMetadata; +use Doctrine\ORM\EntityManager; /** * Class that holds event arguments for a loadMetadata event. @@ -29,6 +31,22 @@ use Doctrine\Common\Persistence\Event\LoadClassMetadataEventArgs as BaseLoadClas */ class LoadClassMetadataEventArgs extends BaseLoadClassMetadataEventArgs { + /** + * @param ClassMetadata $classMetadata + * @param EntityManager $entityManager + */ + function __construct(ClassMetadata $classMetadata, EntityManager $entityManager) + { + /* + We use our own constructor here to enforce type-hinting requirements, + since both inputs are specialized subclasses compared to what the super- + class is willing to accept. + + In particular, we want to have EntityManager rather than ObjectManager. + */ + parent::__construct($classMetadata, $entityManager); + } + /** * Retrieve associated EntityManager. * @@ -36,6 +54,18 @@ class LoadClassMetadataEventArgs extends BaseLoadClassMetadataEventArgs */ public function getEntityManager() { - return $this->getObjectManager(); + $em = $this->getObjectManager(); + assert($em instanceof EntityManager); + return $em; + } + + /** + * Retrieves the associated ClassMetadata. + * + * @return \Doctrine\ORM\Mapping\ClassMetadata + */ + public function getClassMetadata() + { + return parent::getClassMetadata(); } }