From 3c522f49840d69e2fa11c6ed0ad356e6a383ad24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Gallego?= Date: Wed, 5 Feb 2014 11:20:00 +0100 Subject: [PATCH] Reuse Doctrine Collection Lazy Collection --- composer.json | 2 +- lib/Doctrine/ORM/LazyCriteriaCollection.php | 290 +------------------- 2 files changed, 7 insertions(+), 285 deletions(-) diff --git a/composer.json b/composer.json index 0e086534d..8f00b5236 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,7 @@ "require": { "php": ">=5.3.2", "ext-pdo": "*", - "doctrine/collections": "~1.1", + "doctrine/collections": "~1.2", "doctrine/dbal": ">=2.5-dev,<2.6-dev", "symfony/console": "2.*" }, diff --git a/lib/Doctrine/ORM/LazyCriteriaCollection.php b/lib/Doctrine/ORM/LazyCriteriaCollection.php index a9b41426e..a5992157b 100644 --- a/lib/Doctrine/ORM/LazyCriteriaCollection.php +++ b/lib/Doctrine/ORM/LazyCriteriaCollection.php @@ -20,6 +20,7 @@ namespace Doctrine\ORM; use Closure; +use Doctrine\Common\Collections\AbstractLazyCollection; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\Common\Collections\Criteria; @@ -33,7 +34,7 @@ use Doctrine\ORM\Persisters\EntityPersister; * @since 2.5 * @author Michaƫl Gallego */ -class LazyCriteriaCollection implements Collection, Selectable +class LazyCriteriaCollection extends AbstractLazyCollection implements Selectable { /** * @var BasicEntityPersister @@ -45,16 +46,6 @@ class LazyCriteriaCollection implements Collection, Selectable */ protected $criteria; - /** - * @var ArrayCollection - */ - protected $collection; - - /** - * @var bool - */ - protected $initialized = false; - /** * @param EntityPersister $entityPersister * @param Criteria $criteria @@ -72,7 +63,7 @@ class LazyCriteriaCollection implements Collection, Selectable */ public function count() { - if ($this->initialized) { + if ($this->isInitialized()) { return $this->collection->count(); } @@ -82,279 +73,10 @@ class LazyCriteriaCollection implements Collection, Selectable /** * {@inheritDoc} */ - function add($element) + protected function doInitialize() { - $this->initialize(); - return $this->collection->add($element); - } - - /** - * {@inheritDoc} - */ - function clear() - { - $this->initialize(); - $this->collection->clear(); - } - - /** - * {@inheritDoc} - */ - function contains($element) - { - $this->initialize(); - return $this->collection->contains($element); - } - - /** - * {@inheritDoc} - */ - function isEmpty() - { - $this->initialize(); - return $this->collection->isEmpty(); - } - - /** - * {@inheritDoc} - */ - function remove($key) - { - $this->initialize(); - return $this->collection->remove($key); - } - - /** - * {@inheritDoc} - */ - function removeElement($element) - { - $this->initialize(); - return $this->collection->removeElement($element); - } - - /** - * {@inheritDoc} - */ - function containsKey($key) - { - $this->initialize(); - return $this->collection->containsKey($key); - } - - /** - * {@inheritDoc} - */ - function get($key) - { - $this->initialize(); - return $this->collection->get($key); - } - - /** - * {@inheritDoc} - */ - function getKeys() - { - $this->initialize(); - return $this->collection->getKeys(); - } - - /** - * {@inheritDoc} - */ - function getValues() - { - $this->initialize(); - return $this->collection->getValues(); - } - - /** - * {@inheritDoc} - */ - function set($key, $value) - { - $this->initialize(); - $this->collection->set($key, $value); - } - - /** - * {@inheritDoc} - */ - function toArray() - { - $this->initialize(); - return $this->collection->toArray(); - } - - /** - * {@inheritDoc} - */ - function first() - { - $this->initialize(); - return $this->collection->first(); - } - - /** - * {@inheritDoc} - */ - function last() - { - $this->initialize(); - return $this->collection->last(); - } - - /** - * {@inheritDoc} - */ - function key() - { - $this->initialize(); - return $this->collection->key(); - } - - /** - * {@inheritDoc} - */ - function current() - { - $this->initialize(); - return $this->collection->current(); - } - - /** - * {@inheritDoc} - */ - function next() - { - $this->initialize(); - return $this->collection->next(); - } - - /** - * {@inheritDoc} - */ - function exists(Closure $p) - { - $this->initialize(); - return $this->collection->exists($p); - } - - /** - * {@inheritDoc} - */ - function filter(Closure $p) - { - $this->initialize(); - return $this->collection->filter($p); - } - - /** - * {@inheritDoc} - */ - function forAll(Closure $p) - { - $this->initialize(); - return $this->collection->forAll($p); - } - - /** - * {@inheritDoc} - */ - function map(Closure $func) - { - $this->initialize(); - return $this->collection->map($func); - } - - /** - * {@inheritDoc} - */ - function partition(Closure $p) - { - $this->initialize(); - return $this->collection->partition($p); - } - - /** - * {@inheritDoc} - */ - function indexOf($element) - { - $this->initialize(); - return $this->collection->indexOf($element); - } - - /** - * {@inheritDoc} - */ - function slice($offset, $length = null) - { - $this->initialize(); - return $this->collection->slice($offset, $length); - } - - /** - * {@inheritDoc} - */ - public function getIterator() - { - $this->initialize(); - return $this->collection->getIterator(); - } - - /** - * {@inheritDoc} - */ - public function offsetExists($offset) - { - $this->initialize(); - return $this->collection->offsetExists($offset); - } - - /** - * {@inheritDoc} - */ - public function offsetGet($offset) - { - $this->initialize(); - return $this->collection->offsetGet($offset); - } - - /** - * {@inheritDoc} - */ - public function offsetSet($offset, $value) - { - $this->initialize(); - return $this->collection->offsetSet($offset, $value); - } - - /** - * {@inheritDoc} - */ - public function offsetUnset($offset) - { - $this->initialize(); - return $this->collection->offsetUnset($offset); - } - - /** - * Initialize the collection - * - * @return void - */ - protected function initialize() - { - if ($this->initialized) { - return; - } - - $elements = $this->entityPersister->loadCriteria($this->criteria); - - $this->collection = new ArrayCollection($elements); - $this->initialized = true; + $elements = $this->entityPersister->loadCriteria($this->criteria); + $this->collection = new ArrayCollection($elements); } /**