diff --git a/src/Resolver/Exception/CanNotResolve.php b/src/Resolver/Exception/CanNotResolve.php new file mode 100644 index 0000000000000000000000000000000000000000..c52dc7c7d6caad8e85d95bbd97f971d25042a7fd --- /dev/null +++ b/src/Resolver/Exception/CanNotResolve.php @@ -0,0 +1,10 @@ +<?php + + +namespace WPDesk\View\Resolver\Exception; + + +class CanNotResolve extends \RuntimeException +{ + +} \ No newline at end of file diff --git a/src/Resolver/Resolver.php b/src/Resolver/Resolver.php index 74c56bab73156fbd249b889dc8133b038b0f6ce9..ac5095964bb115941c72f089f35b0fa5acf9c3c6 100644 --- a/src/Resolver/Resolver.php +++ b/src/Resolver/Resolver.php @@ -14,7 +14,7 @@ interface Resolver { * @param string $name * @param null|Resolver $renderer * - * @return mixed + * @return string */ public function resolve($name, Renderer $renderer = null); } diff --git a/src/Resolver/WPThemeResolver.php b/src/Resolver/WPThemeResolver.php new file mode 100644 index 0000000000000000000000000000000000000000..68d9a5715f9f502dc73b449647d81fda2b69e245 --- /dev/null +++ b/src/Resolver/WPThemeResolver.php @@ -0,0 +1,53 @@ +<?php + +namespace WPDesk\View\Resolver; + + +use WPDesk\View\Renderer\Renderer; +use WPDesk\View\Resolver\Exception\CanNotResolve; + +/** + * Class should resolve name by standard wp theme resolve + * + * @package WPDesk\View\Resolver + */ +class WPThemeResolver implements Resolver +{ + + /** @var string */ + private $template_base_path; + + + /** + * Base path for templates ie. subdir + * + * @param $template_base_path + */ + public function __construct($template_base_path) + { + $this->template_base_path = $template_base_path; + } + + /** + * Resolve name to full path + * + * @param string $name + * @param Renderer|null $renderer + * + * @return string + */ + public function resolve($name, Renderer $renderer = null) + { + $templateFile = locate_template( + [ + trailingslashit($this->template_base_path) . $name . '.php', + ] + ); + if ( ! $templateFile) { + throw new CanNotResolve("Cannot resolve {$name}"); + } + + return $templateFile; + } + +}