diff --git a/composer.json b/composer.json index 7617b76b5a2f7e5278623e00b38493115ffdefe4..0baefc3528d090bbed41589085d5a404cc8bd32e 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 0000000000000000000000000000000000000000..6d5350ae6a98da3da0c162337a2b71e5808285fa --- /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 0000000000000000000000000000000000000000..230e7649086442932f80d9ce36afb5badec8c146 --- /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 0000000000000000000000000000000000000000..291eae16120563f2e846a80860d6b1241c994f8d --- /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 0e076598fda3eeca2c29a99c89e3d5abb6658f1c..0000000000000000000000000000000000000000 --- 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 ); -}