getTemplateClass() public method

Gets the template class associated with the given string.
public getTemplateClass ( string $name ) : string
$name string The name for which to calculate the template class name
return string The template class name
 public function testExtensionsAreNotInitializedWhenRenderingACompiledTemplate()
 {
     $cache = new Twig_Cache_Filesystem($dir = sys_get_temp_dir() . '/twig');
     $options = array('cache' => $cache, 'auto_reload' => false, 'debug' => false);
     // force compilation
     $twig = new Twig_Environment($loader = new Twig_Loader_Array(array('index' => '{{ foo }}')), $options);
     $key = $cache->generateKey('index', $twig->getTemplateClass('index'));
     $cache->write($key, $twig->compileSource(new Twig_Source('{{ foo }}', 'index')));
     // check that extensions won't be initialized when rendering a template that is already in the cache
     $twig = $this->getMockBuilder('Twig_Environment')->setConstructorArgs(array($loader, $options))->setMethods(array('initExtensions'))->getMock();
     $twig->expects($this->never())->method('initExtensions');
     // render template
     $output = $twig->render('index', array('foo' => 'bar'));
     $this->assertEquals('bar', $output);
     Twig_Tests_FilesystemHelper::removeDir($dir);
 }
Example #2
0
 /**
  * {@inheritdoc}
  */
 public function getTemplateClass($name, $index = null)
 {
     // We override this method to add caching because it gets called multiple
     // times when the same template is used more than once. For example, a page
     // rendering 50 nodes without any node template overrides will use the same
     // node.html.twig for the output of each node and the same compiled class.
     $cache_index = $name . (NULL === $index ? '' : '_' . $index);
     if (!isset($this->templateClasses[$cache_index])) {
         $this->templateClasses[$cache_index] = parent::getTemplateClass($name, $index);
     }
     return $this->templateClasses[$cache_index];
 }