/** * Constructor. * * Composes the Mustache instance. If the AggregateResolver composed by * Mustache does not compose a DefaultResolver, one is created and attached * to the Aggregate. * * The first DefaultResolver encountered in the Aggregate is then used as * the internal resolver for attaching paths. * * @param Mustache $renderer */ public function __construct(Mustache $renderer) { $this->renderer = $renderer; $resolver = $renderer->getResolver(); if (!$resolver->hasType(DefaultResolver::class)) { $resolver->attach($this->createDefaultResolver(), 0); } else { $this->extractDefaultResolver($resolver); } // Register default parameter listeners. $this->paramListeners[] = function ($params, array $defaults) { return $this->mergeArrayParams($params, $defaults); }; $this->paramListeners[] = function ($params, array $defaults) { return $this->mergeObjectParams($params, $defaults); }; }