Esempio n. 1
0
 /**
  * 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;
 }