for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace AssetManager\Core\Resolver;
use Zend\Stdlib\PriorityQueue;
/**
* The aggregate resolver consists out of a multitude of
* resolvers defined by the ResolverInterface.
*/
class AggregateResolver implements ResolverInterface
{
* @var PriorityQueue|ResolverInterface[]
protected $queue;
* Constructor
*
* Instantiate the internal priority queue
public function __construct()
$this->queue = new PriorityQueue();
}
* Attach a resolver
* @param ResolverInterface $resolver
* @param int $priority
* @return self
public function attach(ResolverInterface $resolver, $priority = 1)
$this->queue->insert($resolver, $priority);
return $this;
* {@inheritDoc}
public function resolve($name)
foreach ($this->queue as $resolver) {
$resource = $resolver->resolve($name);
if (null !== $resource) {
return $resource;
return null;
public function collect()
$collection = array();
if (!method_exists($resolver, 'collect')) {
continue;
$collection = array_merge($resolver->collect(), $collection);
return array_unique($collection);