diff options
Diffstat (limited to 'src/Renderer/Renderer.php')
-rw-r--r-- | src/Renderer/Renderer.php | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/Renderer/Renderer.php b/src/Renderer/Renderer.php new file mode 100644 index 00000000..de31ca74 --- /dev/null +++ b/src/Renderer/Renderer.php @@ -0,0 +1,47 @@ +<?php + +namespace Engelsystem\Renderer; + +use Psr\Log\LoggerAwareTrait; + +class Renderer +{ + use LoggerAwareTrait; + + /** @var EngineInterface[] */ + protected $renderer = []; + + /** + * Render a template + * + * @param string $template + * @param mixed[] $data + * @return string + */ + public function render($template, $data = []) + { + foreach ($this->renderer as $renderer) { + if (!$renderer->canRender($template)) { + continue; + } + + return $renderer->get($template, $data); + } + + if ($this->logger) { + $this->logger->error('Unable to find a renderer for template file "{file}"', ['file' => $template]); + } + + return ''; + } + + /** + * Add a new renderer engine + * + * @param EngineInterface $renderer + */ + public function addRenderer(EngineInterface $renderer) + { + $this->renderer[] = $renderer; + } +} |