for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
/**
* @author PhileCMS
* @link https://philecms.com
* @license http://opensource.org/licenses/MIT
*/
namespace Phile\Http;
use IteratorAggregate;
use IteratorIterator;
use Psr\Http\Server\MiddlewareInterface;
use SplPriorityQueue;
use Traversable;
* Middleware queue
class MiddlewareQueue implements IteratorAggregate
{
/** @var SplPriorityQueue middleware */
protected $queue;
public function __construct()
$this->queue = new SplPriorityQueue();
}
* Adds middleware to queue
*
* @param MiddlewareInterface $middleware
* @param int $priority
* @return \self
public function add(MiddlewareInterface $middleware, int $priority = 100): self
$this->queue->insert($middleware, $priority);
return $this;
* Implements IteratorAggregate
* @return Traversable
public function getIterator(): Traversable
return new IteratorIterator($this->queue);