From e1762e7764d4ee4f37757ecd2630f62a440dbf0e Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Thu, 20 Jul 2017 02:22:18 +0200 Subject: replaced template_render with dynamic renderer class --- src/Renderer/EngineInterface.php | 21 ++++++++++++++ src/Renderer/HtmlEngine.php | 34 ++++++++++++++++++++++ src/Renderer/Renderer.php | 62 ++++++++++++++++++++++++++++++++++++++++ src/helpers.php | 17 +++++++++++ 4 files changed, 134 insertions(+) create mode 100644 src/Renderer/EngineInterface.php create mode 100644 src/Renderer/HtmlEngine.php create mode 100644 src/Renderer/Renderer.php (limited to 'src') diff --git a/src/Renderer/EngineInterface.php b/src/Renderer/EngineInterface.php new file mode 100644 index 00000000..ca468db5 --- /dev/null +++ b/src/Renderer/EngineInterface.php @@ -0,0 +1,21 @@ + $content) { + $template = str_replace('%' . $name . '%', $content, $template); + } + } + + return $template; + } + + /** + * @param string $path + * @return bool + */ + public function canRender($path) + { + return strpos($path, '.html') && file_exists($path); + } +} diff --git a/src/Renderer/Renderer.php b/src/Renderer/Renderer.php new file mode 100644 index 00000000..bf3d5609 --- /dev/null +++ b/src/Renderer/Renderer.php @@ -0,0 +1,62 @@ +renderer as $renderer) { + if (!$renderer->canRender($template)) { + continue; + } + + return $renderer->get($template, $data); + } + + engelsystem_error('Unable to find a renderer for template file «' . $template . '».'); + return ''; + } + + /** + * Add a new renderer engine + * + * @param EngineInterface $renderer + */ + public function addRenderer(EngineInterface $renderer) + { + $this->renderer[] = $renderer; + } + + /** + * @return self + * @throws ErrorException + */ + public static function getInstance() + { + return self::$instance; + } + + /** + * @param self $instance + */ + public static function setInstance($instance) + { + self::$instance = $instance; + } +} diff --git a/src/helpers.php b/src/helpers.php index a410b27e..d44d1d21 100644 --- a/src/helpers.php +++ b/src/helpers.php @@ -3,6 +3,7 @@ use Engelsystem\Config\Config; use Engelsystem\Http\Request; +use Engelsystem\Renderer\Renderer; /** * Get or set config values @@ -39,3 +40,19 @@ function request($key = null, $default = null) return $request->input($key, $default); } + +/** + * @param string $template + * @param mixed[] $data + * @return Renderer|string + */ +function view($template = null, $data = null) +{ + $renderer = Renderer::getInstance(); + + if (is_null($template)) { + return $renderer; + } + + return $renderer->render($template, $data); +} -- cgit v1.2.3-54-g00ecf