<?phpnamespace Elements\Bundle\OmnisearchBundle\Service;class ResultList implements ResultListInterface{ /** * @var \ArrayIterator|SourceInterface[] */ protected $sources; /** * @var float */ protected $duration; /** * ResultList constructor. */ public function __construct() { $this->sources = new \ArrayIterator(); } /** * @param SourceInterface $source * @param string $reference * * @return $this */ public function addSource(SourceInterface $source, string $reference) { $this->sources->offsetSet($reference, $source); return $this; } /** * @param string $reference * * @return SourceInterface */ public function getSourceByReference(string $reference) { return $this->sources->offsetGet( $reference ); } /** * @inheritdoc */ public function current() { return $this->sources->current(); } /** * @inheritdoc */ public function next() { $this->sources->next(); } /** * @inheritdoc */ public function key() { return $this->sources->key(); } /** * @inheritdoc */ public function valid() { return $this->sources->valid(); } /** * @inheritdoc */ public function rewind() { $this->sources->rewind(); } /** * @inheritdoc */ public function count() { $count = 0; foreach($this->sources as $source) { $count += $source->count(); } return $count; } /** * @return float */ public function getDuration() { return $this->duration; } /** * @param float $duration * * @return $this */ public function setDuration($duration) { $this->duration = (float)$duration; return $this; } /** * @return float|int */ public function getSourceDuration() { $duration = 0; foreach($this->sources as $source) { $duration += $source->getDuration(); } return $duration; }}