diff --git a/src/Renderer/Renderer.php b/src/Renderer/Renderer.php index 37e13cb0f85f966afd537fe73417a90497a94b9d..35aecc42293b9aba64859fd40badebbcbb9f6e2c 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 0000000000000000000000000000000000000000..5337b571010f7acad7469f7fce7c616a26a795f9 --- /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(); + } + +}