/** * Get template resolver * * @return Resolver\AggregateResolver */ public function getResolver() { if (!$this->resolver instanceof Resolver\AggregateResolver) { $this->resolver = new Resolver\AggregateResolver(); $this->resolver->attach(new Resolver\DefaultResolver(), 0); } return $this->resolver; }
/** * Create the aggregate resolver to use with the Mustache instance. * * @param array $config phly-mustache configuration. * @param ContainerInterface $container * @return Resolver\AggregateResolver */ private function createResolver(array $config, ContainerInterface $container) { $resolvers = []; if (isset($config['resolvers'])) { $resolvers = $this->createResolvers($config['resolvers'], $container); } $aggregate = new Resolver\AggregateResolver(); foreach ($resolvers as $resolver) { $aggregate->attach($resolver); } if ($aggregate->hasType(Resolver\DefaultResolver::class)) { $defaultResolver = $aggregate->fetchByType(Resolver\DefaultResolver::class); } else { $defaultResolver = new Resolver\DefaultResolver(); $aggregate->attach($defaultResolver, 0); } if (isset($config['paths']) && is_array($config['paths'])) { $this->injectResolverPaths($config['paths'], $defaultResolver); } if (isset($config['suffix']) && is_string($config['suffix']) && !empty($config['suffix'])) { $defaultResolver->setSuffix($config['suffix']); } if (isset($config['separator']) && is_string($config['separator']) && !empty($config['separator'])) { $defaultResolver->setSeparator($config['separator']); } return $aggregate; }
/** * Extract and compose the DefaultResolver found in an AggregateResolver. * * Also sets the internal $resolver property to the first found. * * @param AggregateResolver $aggregate */ private function extractDefaultResolver(AggregateResolver $aggregate) { if ($this->resolver instanceof DefaultResolver) { return; } $resolver = $aggregate->fetchByType(DefaultResolver::class); if ($resolver instanceof AggregateResolver) { $queue = $resolver->getIterator(); $resolver = $queue->top(); } $this->resolver = $resolver; }