Viewing file: AbstractLazyCollection.php (6.1 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace Doctrine\Common\Collections;
use Closure;
/** * Lazy collection that is backed by a concrete collection * * @phpstan-template TKey * @psalm-template TKey of array-key * @psalm-template T * @template-implements Collection<TKey,T> */ abstract class AbstractLazyCollection implements Collection { /** * The backed collection to use * * @psalm-var Collection<TKey,T> * @var Collection */ protected $collection;
/** @var bool */ protected $initialized = false;
/** * {@inheritDoc} */ public function count() { $this->initialize();
return $this->collection->count(); }
/** * {@inheritDoc} */ public function add($element) { $this->initialize();
return $this->collection->add($element); }
/** * {@inheritDoc} */ public function clear() { $this->initialize(); $this->collection->clear(); }
/** * {@inheritDoc} */ public function contains($element) { $this->initialize();
return $this->collection->contains($element); }
/** * {@inheritDoc} */ public function isEmpty() { $this->initialize();
return $this->collection->isEmpty(); }
/** * {@inheritDoc} */ public function remove($key) { $this->initialize();
return $this->collection->remove($key); }
/** * {@inheritDoc} */ public function removeElement($element) { $this->initialize();
return $this->collection->removeElement($element); }
/** * {@inheritDoc} */ public function containsKey($key) { $this->initialize();
return $this->collection->containsKey($key); }
/** * {@inheritDoc} */ public function get($key) { $this->initialize();
return $this->collection->get($key); }
/** * {@inheritDoc} */ public function getKeys() { $this->initialize();
return $this->collection->getKeys(); }
/** * {@inheritDoc} */ public function getValues() { $this->initialize();
return $this->collection->getValues(); }
/** * {@inheritDoc} */ public function set($key, $value) { $this->initialize(); $this->collection->set($key, $value); }
/** * {@inheritDoc} */ public function toArray() { $this->initialize();
return $this->collection->toArray(); }
/** * {@inheritDoc} */ public function first() { $this->initialize();
return $this->collection->first(); }
/** * {@inheritDoc} */ public function last() { $this->initialize();
return $this->collection->last(); }
/** * {@inheritDoc} */ public function key() { $this->initialize();
return $this->collection->key(); }
/** * {@inheritDoc} */ public function current() { $this->initialize();
return $this->collection->current(); }
/** * {@inheritDoc} */ public function next() { $this->initialize();
return $this->collection->next(); }
/** * {@inheritDoc} */ public function exists(Closure $p) { $this->initialize();
return $this->collection->exists($p); }
/** * {@inheritDoc} */ public function filter(Closure $p) { $this->initialize();
return $this->collection->filter($p); }
/** * {@inheritDoc} */ public function forAll(Closure $p) { $this->initialize();
return $this->collection->forAll($p); }
/** * {@inheritDoc} */ public function map(Closure $func) { $this->initialize();
return $this->collection->map($func); }
/** * {@inheritDoc} */ public function partition(Closure $p) { $this->initialize();
return $this->collection->partition($p); }
/** * {@inheritDoc} */ public function indexOf($element) { $this->initialize();
return $this->collection->indexOf($element); }
/** * {@inheritDoc} */ public function slice($offset, $length = null) { $this->initialize();
return $this->collection->slice($offset, $length); }
/** * {@inheritDoc} */ public function getIterator() { $this->initialize();
return $this->collection->getIterator(); }
/** * {@inheritDoc} * * @psalm-param TKey $offset */ public function offsetExists($offset) { $this->initialize();
return $this->collection->offsetExists($offset); }
/** * {@inheritDoc} * * @param int|string $offset * * @return mixed * * @psalm-param TKey $offset */ public function offsetGet($offset) { $this->initialize();
return $this->collection->offsetGet($offset); }
/** * {@inheritDoc} * * @param mixed $value * * @psalm-param TKey $offset */ public function offsetSet($offset, $value) { $this->initialize(); $this->collection->offsetSet($offset, $value); }
/** * {@inheritDoc} * * @psalm-param TKey $offset */ public function offsetUnset($offset) { $this->initialize(); $this->collection->offsetUnset($offset); }
/** * Is the lazy collection already initialized? * * @return bool */ public function isInitialized() { return $this->initialized; }
/** * Initialize the collection * * @return void */ protected function initialize() { if ($this->initialized) { return; }
$this->doInitialize(); $this->initialized = true; }
/** * Do the initialization logic * * @return void */ abstract protected function doInitialize(); }
|