Add static caching for Twig_Environment::getTemplateClass()

This commit is contained in:
Scott Reeves
2013-04-29 13:09:58 -04:00
parent 536ea37d1f
commit 4ae5385d43
+8 -1
View File
@@ -44,6 +44,7 @@ class Twig_Environment
protected $functionCallbacks;
protected $filterCallbacks;
protected $staging;
protected $templateClasses;
/**
* Constructor.
@@ -107,6 +108,7 @@ class Twig_Environment
$this->setCache($options['cache']);
$this->functionCallbacks = array();
$this->filterCallbacks = array();
$this->templateClasses = array();
$this->addExtension(new Twig_Extension_Core());
$this->addExtension(new Twig_Extension_Escaper($options['autoescape']));
@@ -262,7 +264,12 @@ class Twig_Environment
*/
public function getTemplateClass($name, $index = null)
{
return $this->templateClassPrefix.md5($this->getLoader()->getCacheKey($name)).(null === $index ? '' : '_'.$index);
$suffix = null === $index ? '' : '_'.$index;
$cls = $name.$suffix;
if (!isset($this->templateClasses[$cls])) {
$this->templateClasses[$cls] = $this->templateClassPrefix.md5($this->getLoader()->getCacheKey($name)).$suffix;
}
return $this->templateClasses[$cls];
}
/**