From 5d140f3de03a76cb022ccca892ebbce32aad68b1 Mon Sep 17 00:00:00 2001 From: dyszczo <krzysiek@inspirelabs.pl> Date: Sun, 23 Sep 2018 22:44:17 +0200 Subject: [PATCH] simple php renderer --- src/Renderer/Renderer.php | 29 +++++++++--------- src/Renderer/SimplePhpRenderer.php | 48 ++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+), 14 deletions(-) create mode 100644 src/Renderer/SimplePhpRenderer.php diff --git a/src/Renderer/Renderer.php b/src/Renderer/Renderer.php index 37e13cb..35aecc4 100644 --- a/src/Renderer/Renderer.php +++ b/src/Renderer/Renderer.php @@ -7,19 +7,20 @@ use WPDesk\View\Resolver\Resolver; /** * Can render templates */ -interface Renderer { - /** - * Set the resolver used to map a template name to a resource the renderer may consume. - * - * @param Resolver $resolver - */ - public function set_resolver( Resolver $resolver ); +interface Renderer +{ + /** + * Set the resolver used to map a template name to a resource the renderer may consume. + * + * @param Resolver $resolver + */ + public function set_resolver(Resolver $resolver); - /** - * @param string $template - * @param array $params - * - * @return string - */ - public function render( $template, array $params ); + /** + * @param string $template + * @param array $params + * + * @return string + */ + public function render($template, array $params = null); } diff --git a/src/Renderer/SimplePhpRenderer.php b/src/Renderer/SimplePhpRenderer.php new file mode 100644 index 0000000..5337b57 --- /dev/null +++ b/src/Renderer/SimplePhpRenderer.php @@ -0,0 +1,48 @@ +<?php + +namespace WPDesk\View\Renderer; + +use WPDesk\View\Resolver\Resolver; + +/** + * Can render templates + */ +class SimplePhpRenderer implements Renderer +{ + /** @var Resolver */ + private $resolver; + + public function __construct(Resolver $resolver) + { + $this->set_resolver($resolver); + } + + /** + * @param Resolver $resolver + * + * @return void|Resolver + */ + public function set_resolver(Resolver $resolver) + { + $this->resolver = $resolver; + } + + /** + * @param string $template + * @param array $params + * + * @return string + */ + public function render($template, array $params = null) + { + if ($params !== null) { + extract($params, EXTR_SKIP); + } + + ob_start(); + include($this->resolver->resolve($template)); + + return ob_get_clean(); + } + +} -- GitLab