Skip to content
Snippets Groups Projects

feat/woo template

Open Bartek Jaskulski requested to merge feat/woo-template into devel
3 files
+ 84
1
Compare changes
  • Side-by-side
  • Inline

Files

+ 61
0
 
<?php
 
 
namespace WPDesk\View\Resolver;
 
 
 
use WPDesk\View\Renderer\Renderer;
 
use WPDesk\View\Resolver\Exception\CanNotResolve;
 
 
/**
 
* Provide resolvers and this class can try them one after another
 
*
 
* @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}");
 
}
 
 
}
Loading