From bdc637ab65d0ad9d312927ba04e70ad9df8d7708 Mon Sep 17 00:00:00 2001
From: dyszczo <krzysztof@dyszczyk.pl>
Date: Fri, 18 May 2018 16:29:00 +0200
Subject: [PATCH] renderer/resolver

---
 composer.json                       |  2 +-
 src/Renderer/LoadTemplatePlugin.php | 24 ++++++++++++++++++++++++
 src/Renderer/Renderer.php           | 27 +++++++++++++++++++++++++++
 src/Resolver/Resolver.php           | 18 ++++++++++++++++++
 src/class-view.php                  | 19 -------------------
 5 files changed, 70 insertions(+), 20 deletions(-)
 create mode 100644 src/Renderer/LoadTemplatePlugin.php
 create mode 100644 src/Renderer/Renderer.php
 create mode 100644 src/Resolver/Resolver.php
 delete mode 100644 src/class-view.php

diff --git a/composer.json b/composer.json
index 7617b76..0baefc3 100644
--- a/composer.json
+++ b/composer.json
@@ -18,7 +18,7 @@
         "wimg/php-compatibility": "^8"
     },
     "autoload": {
-        "classmap": ["src/"]
+        "psr-4": {"WPDesk\\View\\": "src/"}
     },
     "autoload-dev": {
     },
diff --git a/src/Renderer/LoadTemplatePlugin.php b/src/Renderer/LoadTemplatePlugin.php
new file mode 100644
index 0000000..6d5350a
--- /dev/null
+++ b/src/Renderer/LoadTemplatePlugin.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace WPDesk\View\Renderer;
+
+use WPDesk\View\Resolver\Resolver;
+
+/**
+ * Can render templates
+ */
+class LoadTemplatePlugin implements Renderer {
+	private $plugin;
+
+	public function __construct($plugin) {
+		$this->plugin = $plugin;
+	}
+
+	public function set_resolver( Resolver $resolver ) {
+
+	}
+
+	public function render( $template, $params ) {
+		return $this->plugin->load_template($template, '', $params);
+	}
+}
diff --git a/src/Renderer/Renderer.php b/src/Renderer/Renderer.php
new file mode 100644
index 0000000..230e764
--- /dev/null
+++ b/src/Renderer/Renderer.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace WPDesk\View\Renderer;
+
+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
+	 *
+	 * @return Resolver
+	 */
+	public function set_resolver( Resolver $resolver );
+
+	/**
+	 * @param string $template
+	 * @param array $params
+	 *
+	 * @return string
+	 */
+	public function render( $template, $params );
+}
diff --git a/src/Resolver/Resolver.php b/src/Resolver/Resolver.php
new file mode 100644
index 0000000..291eae1
--- /dev/null
+++ b/src/Resolver/Resolver.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace WPDesk\View\Resolver;
+
+/**
+ * Can resolve template name to a file
+ */
+interface Resolver {
+	/**
+	 * Resolve a template/pattern name to a resource the renderer can consume
+	 *
+	 * @param  string $name
+	 * @param  null|Resolver $renderer
+	 *
+	 * @return mixed
+	 */
+	public function resolve($name, Resolver $renderer = null);
+}
diff --git a/src/class-view.php b/src/class-view.php
deleted file mode 100644
index 0e07659..0000000
--- a/src/class-view.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-if ( ! defined( 'ABSPATH' ) ) {
-	exit;
-} // Exit if accessed directly
-
-/**
- * Can render templates
- */
-interface WPDesk_View {
-	/**
-	 * @param string $template
-	 * @param string $template_path
-	 * @param array $template_params
-	 *
-	 * @return string
-	 */
-	public function load_template( $template, $template_path, $template_params );
-}
-- 
GitLab