annotate vendor/symfony/dependency-injection/Argument/RewindableGenerator.php @ 16:c2387f117808

Routine composer update
author Chris Cannam
date Tue, 10 Jul 2018 15:07:59 +0100
parents 1fec387a4317
children 129ea1e6d783
rev   line source
Chris@14 1 <?php
Chris@14 2
Chris@14 3 /*
Chris@14 4 * This file is part of the Symfony package.
Chris@14 5 *
Chris@14 6 * (c) Fabien Potencier <fabien@symfony.com>
Chris@14 7 *
Chris@14 8 * For the full copyright and license information, please view the LICENSE
Chris@14 9 * file that was distributed with this source code.
Chris@14 10 */
Chris@14 11
Chris@14 12 namespace Symfony\Component\DependencyInjection\Argument;
Chris@14 13
Chris@14 14 /**
Chris@14 15 * @internal
Chris@14 16 */
Chris@14 17 class RewindableGenerator implements \IteratorAggregate, \Countable
Chris@14 18 {
Chris@14 19 private $generator;
Chris@14 20 private $count;
Chris@14 21
Chris@14 22 /**
Chris@14 23 * @param callable $generator
Chris@14 24 * @param int|callable $count
Chris@14 25 */
Chris@14 26 public function __construct(callable $generator, $count)
Chris@14 27 {
Chris@14 28 $this->generator = $generator;
Chris@14 29 $this->count = $count;
Chris@14 30 }
Chris@14 31
Chris@14 32 public function getIterator()
Chris@14 33 {
Chris@14 34 $g = $this->generator;
Chris@14 35
Chris@14 36 return $g();
Chris@14 37 }
Chris@14 38
Chris@14 39 public function count()
Chris@14 40 {
Chris@14 41 if (is_callable($count = $this->count)) {
Chris@14 42 $this->count = $count();
Chris@14 43 }
Chris@14 44
Chris@14 45 return $this->count;
Chris@14 46 }
Chris@14 47 }