Passed
Push — develop ( df587f...f7c208 )
by Schlaefer
34s
created

MiddlewareQueue   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 3
lcom 1
cbo 0
dl 0
loc 33
ccs 8
cts 8
cp 1
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A add() 0 5 1
A getIterator() 0 4 1
1
<?php
2
/**
3
 * @author  PhileCMS
4
 * @link    https://philecms.com
5
 * @license http://opensource.org/licenses/MIT
6
 */
7
8
namespace Phile\Http;
9
10
use IteratorAggregate;
11
use IteratorIterator;
12
use Psr\Http\Server\MiddlewareInterface;
13
use SplPriorityQueue;
14
use Traversable;
15
16
/**
17
 * Middleware queue
18
 */
19
class MiddlewareQueue implements IteratorAggregate
20
{
21
    /** @var SplPriorityQueue middleware */
22
    protected $queue;
23
24 4
    public function __construct()
25
    {
26 4
        $this->queue = new SplPriorityQueue();
27 4
    }
28
29
    /**
30
     * Adds middleware to queue
31
     *
32
     * @param MiddlewareInterface $middleware
33
     * @param int $priority
34
     * @return \self
35
     */
36 4
    public function add(MiddlewareInterface $middleware, int $priority = 100): self
37
    {
38 4
        $this->queue->insert($middleware, $priority);
39 4
        return $this;
40
    }
41
42
    /**
43
     * Implements IteratorAggregate
44
     *
45
     * @return Traversable
46
     */
47 4
    public function getIterator(): Traversable
48
    {
49 4
        return new IteratorIterator($this->queue);
50
    }
51
}
52