Nelmio\Alice\Generator\Resolver\Fixture\TemplateFixtureResolver::resolveExtendedFixtures PHP Method

resolveExtendedFixtures() private method

private resolveExtendedFixtures ( TemplatingFixture $fixture, array $extendedFixtureReferences, FixtureBag $unresolvedFixtures, TemplatingFixtureBag $resolvedFixtures, ResolvingContext $context ) : array
$fixture Nelmio\Alice\Definition\Fixture\TemplatingFixture
$extendedFixtureReferences array
$unresolvedFixtures Nelmio\Alice\FixtureBag
$resolvedFixtures TemplatingFixtureBag
$context Nelmio\Alice\Generator\Resolver\ResolvingContext
return array The first element is a FixtureBag with all the extended fixtures and the second is a TemplatingFixtureBag which may contain new fixtures (from the resolution)
    private function resolveExtendedFixtures(TemplatingFixture $fixture, array $extendedFixtureReferences, FixtureBag $unresolvedFixtures, TemplatingFixtureBag $resolvedFixtures, ResolvingContext $context) : array
    {
        $fixtures = new FixtureBag();
        foreach ($extendedFixtureReferences as $reference) {
            $fixtureId = $reference->getId();
            $context->add($fixtureId);
            if (false === $unresolvedFixtures->has($fixtureId)) {
                throw FixtureNotFoundExceptionFactory::create($fixtureId);
            }
            if ($resolvedFixtures->has($fixtureId)) {
                if (false === $resolvedFixtures->hasTemplate($fixtureId)) {
                    throw InvalidArgumentExceptionFactory::createForFixtureExtendingANonTemplateFixture($fixture, $fixtureId);
                }
                $fixtures = $fixtures->with($resolvedFixtures->getTemplate($fixtureId));
                continue;
            }
            $unresolvedFixture = $unresolvedFixtures->get($fixtureId);
            if (false === $unresolvedFixture instanceof TemplatingFixture) {
                throw InvalidArgumentExceptionFactory::createForFixtureExtendingANonTemplateFixture($fixture, $fixtureId);
            }
            $resolvedFixtures = $this->resolve($unresolvedFixtures->get($fixtureId), $unresolvedFixtures, $resolvedFixtures, $context);
            $fixtures = $fixtures->with($resolvedFixtures->get($fixtureId));
        }
        return [$fixtures, $resolvedFixtures];
    }