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