annotate vendor/symfony/dependency-injection/Argument/RewindableGenerator.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
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@17 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 }