[ Index ] |
PHP Cross Reference of phpBB-3.3.14-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12 namespace Symfony\Bridge\Twig; 13 14 use Symfony\Component\Templating\EngineInterface; 15 use Symfony\Component\Templating\StreamingEngineInterface; 16 use Symfony\Component\Templating\TemplateNameParserInterface; 17 use Symfony\Component\Templating\TemplateReferenceInterface; 18 use Twig\Environment; 19 use Twig\Error\Error; 20 use Twig\Error\LoaderError; 21 use Twig\Loader\ExistsLoaderInterface; 22 use Twig\Loader\SourceContextLoaderInterface; 23 use Twig\Template; 24 25 /** 26 * This engine knows how to render Twig templates. 27 * 28 * @author Fabien Potencier <fabien@symfony.com> 29 */ 30 class TwigEngine implements EngineInterface, StreamingEngineInterface 31 { 32 protected $environment; 33 protected $parser; 34 35 public function __construct(Environment $environment, TemplateNameParserInterface $parser) 36 { 37 $this->environment = $environment; 38 $this->parser = $parser; 39 } 40 41 /** 42 * {@inheritdoc} 43 * 44 * It also supports Template as name parameter. 45 * 46 * @throws Error if something went wrong like a thrown exception while rendering the template 47 */ 48 public function render($name, array $parameters = []) 49 { 50 return $this->load($name)->render($parameters); 51 } 52 53 /** 54 * {@inheritdoc} 55 * 56 * It also supports Template as name parameter. 57 * 58 * @throws Error if something went wrong like a thrown exception while rendering the template 59 */ 60 public function stream($name, array $parameters = []) 61 { 62 $this->load($name)->display($parameters); 63 } 64 65 /** 66 * {@inheritdoc} 67 * 68 * It also supports Template as name parameter. 69 */ 70 public function exists($name) 71 { 72 if ($name instanceof Template) { 73 return true; 74 } 75 76 $loader = $this->environment->getLoader(); 77 78 if (1 === Environment::MAJOR_VERSION && !$loader instanceof ExistsLoaderInterface) { 79 try { 80 // cast possible TemplateReferenceInterface to string because the 81 // EngineInterface supports them but LoaderInterface does not 82 if ($loader instanceof SourceContextLoaderInterface) { 83 $loader->getSourceContext((string) $name); 84 } else { 85 $loader->getSource((string) $name); 86 } 87 88 return true; 89 } catch (LoaderError $e) { 90 } 91 92 return false; 93 } 94 95 return $loader->exists((string) $name); 96 } 97 98 /** 99 * {@inheritdoc} 100 * 101 * It also supports Template as name parameter. 102 */ 103 public function supports($name) 104 { 105 if ($name instanceof Template) { 106 return true; 107 } 108 109 $template = $this->parser->parse($name); 110 111 return 'twig' === $template->get('engine'); 112 } 113 114 /** 115 * Loads the given template. 116 * 117 * @param string|TemplateReferenceInterface|Template $name A template name or an instance of 118 * TemplateReferenceInterface or Template 119 * 120 * @return Template 121 * 122 * @throws \InvalidArgumentException if the template does not exist 123 */ 124 protected function load($name) 125 { 126 if ($name instanceof Template) { 127 return $name; 128 } 129 130 try { 131 return $this->environment->loadTemplate((string) $name); 132 } catch (LoaderError $e) { 133 throw new \InvalidArgumentException($e->getMessage(), $e->getCode(), $e); 134 } 135 } 136 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |