/** * @param string $templateIdentifier * @param \Closure $templateSourceClosure Closure which returns the template source if needed * @return ParsedTemplateInterface */ protected function getOrParseAndStoreTemplate($templateIdentifier, $templateSourceClosure) { if ($this->templateCompiler->has($templateIdentifier)) { $parsedTemplate = $this->templateCompiler->get($templateIdentifier); } else { $parsedTemplate = $this->templateParser->parse($templateSourceClosure($this, $this->templatePaths)); if ($parsedTemplate->isCompilable()) { $this->templateCompiler->store($templateIdentifier, $parsedTemplate); } } return $parsedTemplate; }