From 6f1107c4ee60c743ca75598821154c0c2865be64 Mon Sep 17 00:00:00 2001 From: Darien Hager Date: Tue, 5 May 2015 15:28:23 -0700 Subject: [PATCH] Clarify state-changes, replace array_key_exists() with isset() for speed --- .../EventListener/CacheMetadataListener.php | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/tests/Doctrine/Tests/EventListener/CacheMetadataListener.php b/tests/Doctrine/Tests/EventListener/CacheMetadataListener.php index fd0a922f8..82a4f0db6 100644 --- a/tests/Doctrine/Tests/EventListener/CacheMetadataListener.php +++ b/tests/Doctrine/Tests/EventListener/CacheMetadataListener.php @@ -13,6 +13,9 @@ class CacheMetadataListener /** * Tracks which entities we have already forced caching enabled on. This is * important to avoid some potential infinite-recursion issues. + * + * Key is the name of the entity, payload is unimportant. + * * @var array */ protected $enabledItems = array(); @@ -33,13 +36,28 @@ class CacheMetadataListener $this->enableCaching($metadata, $em); } + /** + * @param ClassMetadata $metadata + * @return bool + */ + private function isVisited(ClassMetaData $metadata) { + return isset($this->enabledItems[$metadata->getName()]); + } + + /** + * @param ClassMetadata $metadata + */ + private function recordVisit(ClassMetaData $metadata) { + $this->enabledItems[$metadata->getName()] = true; + } + /** * @param ClassMetadata $metadata * @param EntityManager $em */ protected function enableCaching(ClassMetadata $metadata, EntityManager $em) { - if (array_key_exists($metadata->getName(), $this->enabledItems)) { + if ($this->isVisited($metadata)) { return; // Already handled in the past } @@ -53,7 +71,7 @@ class CacheMetadataListener $metadata->enableCache($cache); - $this->enabledItems[$metadata->getName()] = $metadata; + $this->recordVisit($metadata); /* * Only enable association-caching when the target has already been @@ -64,7 +82,7 @@ class CacheMetadataListener $targetMeta = $em->getClassMetadata($mapping['targetEntity']); $this->enableCaching($targetMeta, $em); - if (array_key_exists($targetMeta->getName(), $this->enabledItems)) { + if ($this->isVisited($targetMeta)) { $metadata->enableAssociationCache($mapping['fieldName'], $cache); } }