diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs new file mode 100644 index 0000000000000000000000000000000000000000..b6e5820183d72ebc6cfede7b36f1e216fb01a0d3 --- /dev/null +++ b/.git-blame-ignore-revs @@ -0,0 +1 @@ +5c1e330583a0d5eda6426db1c632784feff507e2 diff --git a/composer.json b/composer.json index 9aabcbfd6524c8565176bfdfeb7d3681b73b80be..c5cb15af5aa7484022822b40d0d8b6ead85c7305 100644 --- a/composer.json +++ b/composer.json @@ -1,33 +1,40 @@ { - "name": "wpdesk/wp-view", - "license": "MIT", - "authors": [ - { - "name": "Krzysiek", - "email": "krzysiek@wpdesk.pl" - } - ], - "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "<7", - "wp-coding-standards/wpcs": "^0.14.1", - "squizlabs/php_codesniffer": "^3.0.2", - "mockery/mockery": "*", - "10up/wp_mock": "*", - "wimg/php-compatibility": "^8" - }, - "autoload": { - "psr-4": {"WPDesk\\View\\": "src/"} - }, - "autoload-dev": { - }, - "scripts": { - "phpcs": "phpcs", - "phpunit-unit": "phpunit --configuration phpunit-unit.xml --coverage-text --colors=never", - "phpunit-unit-fast": "phpunit --configuration phpunit-unit.xml --no-coverage", - "phpunit-integration": "phpunit --configuration phpunit-integration.xml --coverage-text --colors=never", - "phpunit-integration-fast": "phpunit --configuration phpunit-integration.xml --no-coverage" - } + "name": "wpdesk/wp-view", + "license": "MIT", + "authors": [ + { + "name": "WP Desk", + "role": "Owner" + }, + { + "name": "Krzysiek", + "email": "krzysiek@wpdesk.pl" + } + ], + "require": { + "php": ">=7.0 | ^8" + }, + "require-dev": { + "phpunit/phpunit": "<7", + "wpdesk/wp-code-sniffer": "^1", + "mockery/mockery": "*", + "10up/wp_mock": "*", + "wpdesk/phpstan-rules": "^1.1" + }, + "autoload": { + "psr-4": {"WPDesk\\View\\": "src/"} + }, + "scripts": { + "phpcs": "phpcs", + "phpunit-unit": "phpunit --configuration phpunit-unit.xml --coverage-text --colors=never", + "phpunit-unit-fast": "phpunit --configuration phpunit-unit.xml --no-coverage", + "phpunit-integration": "phpunit --configuration phpunit-integration.xml --coverage-text --colors=never", + "phpunit-integration-fast": "phpunit --configuration phpunit-integration.xml --no-coverage" + }, + "config": { + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true, + "phpstan/extension-installer": true + } + } } diff --git a/src/PluginViewBuilder.php b/src/PluginViewBuilder.php index cb96a8486f6d4c81c7956e90d51dd9b58f2ffa3a..646a9e5c6ccba99d1b3bd75f5d0d8f2453ad3615 100644 --- a/src/PluginViewBuilder.php +++ b/src/PluginViewBuilder.php @@ -13,6 +13,7 @@ use WPDesk\View\Resolver\WPThemeResolver; * @package WPDesk\View */ class PluginViewBuilder { + /** @var string */ private $plugin_dir; @@ -62,9 +63,9 @@ class PluginViewBuilder { * * @return string Rendered template. */ - public function loadTemplate( $name, $path = '.', $args = array() ) { + public function loadTemplate( $name, $path = '.', $args = [] ) { $renderer = $this->createSimpleRenderer(); return $renderer->render( trailingslashit( $path ) . $name, $args ); } -} \ No newline at end of file +} diff --git a/src/Renderer/LoadTemplatePlugin.php b/src/Renderer/LoadTemplatePlugin.php index 0a66a2becb5ba4f9a2504f5eaf81ff40fa19df35..e0d382ef8d22de3ab4ae69568f4e5c8bfc2568f8 100644 --- a/src/Renderer/LoadTemplatePlugin.php +++ b/src/Renderer/LoadTemplatePlugin.php @@ -8,20 +8,20 @@ use WPDesk\View\Resolver\Resolver; * Can render templates */ class LoadTemplatePlugin implements Renderer { + private $plugin; private $path; - public function __construct($plugin, $path = '') { + public function __construct( $plugin, $path = '' ) { $this->plugin = $plugin; - $this->path = $path; + $this->path = $path; } public function set_resolver( Resolver $resolver ) { - } - public function render($template, array $params = null) { - return $this->plugin->load_template($template, $this->path, $params); + public function render( $template, array $params = null ) { + return $this->plugin->load_template( $template, $this->path, $params ); } } diff --git a/src/Renderer/Renderer.php b/src/Renderer/Renderer.php index e106044c51747edbddf966f4e0242af2f477126f..1c7653b5b3a6a5cd6e0e0b4b3035b6e85ad1d072 100644 --- a/src/Renderer/Renderer.php +++ b/src/Renderer/Renderer.php @@ -7,26 +7,26 @@ 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 { - /** - * @param string $template - * @param array $params - * - * @return string - */ - public function render($template, array $params = null); + /** + * 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 - */ - public function output_render($template, array $params = null); + /** + * @param string $template + * @param array $params + * + * @return string + */ + public function render( $template, array $params = null ); + + /** + * @param string $template + * @param array $params + */ + public function output_render( $template, array $params = null ); } diff --git a/src/Renderer/SimplePhpRenderer.php b/src/Renderer/SimplePhpRenderer.php index 5e6d7596f13430ae8aa76187d9056fac9a71c320..caa4828fa28bd7fe0d694f2564c33ae19a58a633 100644 --- a/src/Renderer/SimplePhpRenderer.php +++ b/src/Renderer/SimplePhpRenderer.php @@ -7,50 +7,45 @@ 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|null $params - * - * @return string - */ - public function render($template, array $params = null) - { - ob_start(); - $this->output_render( $template, $params ); - return ob_get_clean(); - } - - /** - * @param string $template - * @param array|null $params - */ - public function output_render($template, array $params = null) - { - if ($params !== null) { - extract($params, EXTR_SKIP); - } - - include($this->resolver->resolve($template . '.php')); - } - +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|null $params + * + * @return string + */ + public function render( $template, array $params = null ) { + ob_start(); + $this->output_render( $template, $params ); + return ob_get_clean(); + } + + /** + * @param string $template + * @param array|null $params + */ + public function output_render( $template, array $params = null ) { + if ( $params !== null ) { + extract( $params, EXTR_SKIP ); + } + + include $this->resolver->resolve( $template . '.php' ); + } } diff --git a/src/Resolver/ChainResolver.php b/src/Resolver/ChainResolver.php index eaa394f1d761aa032fa3da442540bbfdeadb20a3..9f18296cf5696e6a6b044ceb4d39bfd88fc9ba2e 100644 --- a/src/Resolver/ChainResolver.php +++ b/src/Resolver/ChainResolver.php @@ -2,7 +2,6 @@ namespace WPDesk\View\Resolver; - use WPDesk\View\Renderer\Renderer; use WPDesk\View\Resolver\Exception\CanNotResolve; @@ -11,51 +10,47 @@ use WPDesk\View\Resolver\Exception\CanNotResolve; * * @package WPDesk\View\Resolver */ -class ChainResolver implements Resolver -{ - /** @var Resolver[] */ - private $resolvers; - - /** - * Warning: function with variadic input. Input should be list of Resolver instances. - */ - public function __construct() - { - $args = func_get_args(); - foreach ($args as $resolver) { - $this->appendResolver($resolver); - } - } - - /** - * Append resolver to the end of the list - * - * @param Resolver $resolver - */ - public function appendResolver( $resolver) - { - $this->resolvers[] = $resolver; - } - - /** - * Resolve name to full path - * - * @param string $name - * @param Renderer|null $renderer - * - * @return string - */ - public function resolve($name, Renderer $renderer = null) - { - foreach ($this->resolvers as $resolver) { - try { - return $resolver->resolve($name); - } catch (CanNotResolve $e) { - // not interested - } - } - - throw new CanNotResolve("Cannot resolve {$name}"); - } - +class ChainResolver implements Resolver { + + /** @var Resolver[] */ + private $resolvers; + + /** + * Warning: function with variadic input. Input should be list of Resolver instances. + */ + public function __construct() { + $args = func_get_args(); + foreach ( $args as $resolver ) { + $this->appendResolver( $resolver ); + } + } + + /** + * Append resolver to the end of the list + * + * @param Resolver $resolver + */ + public function appendResolver( $resolver ) { + $this->resolvers[] = $resolver; + } + + /** + * Resolve name to full path + * + * @param string $name + * @param Renderer|null $renderer + * + * @return string + */ + public function resolve( $name, Renderer $renderer = null ) { + foreach ( $this->resolvers as $resolver ) { + try { + return $resolver->resolve( $name ); + } catch ( CanNotResolve $e ) { + // not interested + } + } + + throw new CanNotResolve( "Cannot resolve {$name}" ); + } } diff --git a/src/Resolver/DirResolver.php b/src/Resolver/DirResolver.php index 69f1b6cca966ae5b396327152baf40d690ed48df..a95d3115ea930982b5c7369c90667a5c2ee04f23 100644 --- a/src/Resolver/DirResolver.php +++ b/src/Resolver/DirResolver.php @@ -2,7 +2,6 @@ namespace WPDesk\View\Resolver; - use WPDesk\View\Renderer\Renderer; use WPDesk\View\Resolver\Exception\CanNotResolve; @@ -11,40 +10,36 @@ use WPDesk\View\Resolver\Exception\CanNotResolve; * * @package WPDesk\View\Resolver */ -class DirResolver implements Resolver -{ - - /** @var string */ - private $dir; - - - /** - * Base path for templates ie. subdir - * - * @param $dir - */ - public function __construct($dir) - { - $this->dir = $dir; - } - - /** - * Resolve name to full path - * - * @param string $name - * @param Renderer|null $renderer - * - * @return string - */ - public function resolve($name, Renderer $renderer = null) - { - $dir = rtrim($this->dir, '/'); - $fullName = $dir . '/' . $name; - if (file_exists($fullName)) { - return $fullName; - } - - throw new CanNotResolve("Cannot resolve {$name}"); - } - +class DirResolver implements Resolver { + + /** @var string */ + private $dir; + + + /** + * Base path for templates ie. subdir + * + * @param $dir + */ + public function __construct( $dir ) { + $this->dir = $dir; + } + + /** + * Resolve name to full path + * + * @param string $name + * @param Renderer|null $renderer + * + * @return string + */ + public function resolve( $name, Renderer $renderer = null ) { + $dir = rtrim( $this->dir, '/' ); + $fullName = $dir . '/' . $name; + if ( file_exists( $fullName ) ) { + return $fullName; + } + + throw new CanNotResolve( "Cannot resolve {$name}" ); + } } diff --git a/src/Resolver/Exception/CanNotResolve.php b/src/Resolver/Exception/CanNotResolve.php index c52dc7c7d6caad8e85d95bbd97f971d25042a7fd..cef04f6144959d0927852b3b8b4281098f55e18a 100644 --- a/src/Resolver/Exception/CanNotResolve.php +++ b/src/Resolver/Exception/CanNotResolve.php @@ -3,8 +3,7 @@ namespace WPDesk\View\Resolver\Exception; +class CanNotResolve extends \RuntimeException { -class CanNotResolve extends \RuntimeException -{ -} \ No newline at end of file +} diff --git a/src/Resolver/NullResolver.php b/src/Resolver/NullResolver.php index 4f69832fb4944bb87ecc7f1706ea3dd1c8790ece..27249b23da536d53100cf55c50f6fd2a9ffff3d1 100644 --- a/src/Resolver/NullResolver.php +++ b/src/Resolver/NullResolver.php @@ -2,7 +2,6 @@ namespace WPDesk\View\Resolver; - use WPDesk\View\Renderer\Renderer; use WPDesk\View\Resolver\Exception\CanNotResolve; @@ -11,12 +10,10 @@ use WPDesk\View\Resolver\Exception\CanNotResolve; * * @package WPDesk\View\Resolver */ -class NullResolver implements Resolver -{ +class NullResolver implements Resolver { - public function resolve($name, Renderer $renderer = null) - { - throw new CanNotResolve("Null Cannot resolve"); - } + public function resolve( $name, Renderer $renderer = null ) { + throw new CanNotResolve( 'Null Cannot resolve' ); + } } diff --git a/src/Resolver/Resolver.php b/src/Resolver/Resolver.php index ac5095964bb115941c72f089f35b0fa5acf9c3c6..883904c6b1592586cf395208cd8544f469ad77c6 100644 --- a/src/Resolver/Resolver.php +++ b/src/Resolver/Resolver.php @@ -16,5 +16,5 @@ interface Resolver { * * @return string */ - public function resolve($name, Renderer $renderer = null); + public function resolve( $name, Renderer $renderer = null ); } diff --git a/src/Resolver/WPThemeResolver.php b/src/Resolver/WPThemeResolver.php index d95028ca24e72f3f63717c6a1f01d03a27116110..349066264da149e300d4f6da250b10b591aa995c 100644 --- a/src/Resolver/WPThemeResolver.php +++ b/src/Resolver/WPThemeResolver.php @@ -2,7 +2,6 @@ namespace WPDesk\View\Resolver; - use WPDesk\View\Renderer\Renderer; use WPDesk\View\Resolver\Exception\CanNotResolve; @@ -11,43 +10,39 @@ use WPDesk\View\Resolver\Exception\CanNotResolve; * * @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, - ] - ); - if ( ! $templateFile) { - throw new CanNotResolve("Cannot resolve {$name}"); - } - - return $templateFile; - } - +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, + ] + ); + if ( ! $templateFile ) { + throw new CanNotResolve( "Cannot resolve {$name}" ); + } + + return $templateFile; + } }