diff --git a/src/Renderer/Renderer.php b/src/Renderer/Renderer.php index e106044c51747edbddf966f4e0242af2f477126f..926a41886f06fcc544345b0fcf54f60becd57ab3 100644 --- a/src/Renderer/Renderer.php +++ b/src/Renderer/Renderer.php @@ -13,6 +13,8 @@ interface Renderer * Set the resolver used to map a template name to a resource the renderer may consume. * * @param Resolver $resolver + * + * @deprecated Setting resolver doesn't concern renderer. Pass it with setter method, or by constructor, but it shouldn't be included in interface declaration. */ public function set_resolver(Resolver $resolver); diff --git a/src/Resolver/DirResolver.php b/src/Resolver/DirResolver.php index 69f1b6cca966ae5b396327152baf40d690ed48df..098f1645f845a851cf9623025deb069af9e2c3d8 100644 --- a/src/Resolver/DirResolver.php +++ b/src/Resolver/DirResolver.php @@ -7,7 +7,7 @@ use WPDesk\View\Renderer\Renderer; use WPDesk\View\Resolver\Exception\CanNotResolve; /** - * Class should resolve name by serching in provided dir. If empty then current dir + * Class should resolve name by serching in provided dir. * * @package WPDesk\View\Resolver */ @@ -21,10 +21,14 @@ class DirResolver implements Resolver /** * Base path for templates ie. subdir * - * @param $dir + * @param string $dir */ public function __construct($dir) { + if ( empty( $dir ) ) { + trigger_error( "DirResolver requires templates' base path.", E_USER_DEPRECATED ); + } + $this->dir = $dir; } @@ -39,6 +43,11 @@ class DirResolver implements Resolver public function resolve($name, Renderer $renderer = null) { $dir = rtrim($this->dir, '/'); + + if ( empty( $dir ) || $dir === '/' ) { + throw new CanNotResolve("Denying to search in system's root path."); + } + $fullName = $dir . '/' . $name; if (file_exists($fullName)) { return $fullName; diff --git a/src/Resolver/Resolver.php b/src/Resolver/Resolver.php index ac5095964bb115941c72f089f35b0fa5acf9c3c6..3bc575a1bd148b3b4a1eee6588a36be02e76409d 100644 --- a/src/Resolver/Resolver.php +++ b/src/Resolver/Resolver.php @@ -5,14 +5,14 @@ namespace WPDesk\View\Resolver; use WPDesk\View\Renderer\Renderer; /** - * Can resolve template name to a file + * Can resolve template name to a file. */ interface Resolver { /** - * Resolve a template/pattern name to a resource the renderer can consume + * Resolve a template/pattern name to a resource the renderer can consume. * * @param string $name - * @param null|Resolver $renderer + * @param null|Resolver $renderer Deprecated. * * @return string */