HasDefaultRemoveAndElement   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 19
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 6
c 1
b 0
f 1
dl 0
loc 19
ccs 8
cts 8
cp 1
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A element() 0 3 1
A returnOrThrowNoSuchElement() 0 7 2
A remove() 0 3 1
1
<?php declare(strict_types=1);
2
3
namespace Initx\Querabilis\Driver;
4
5
use Initx\Querabilis\Envelope;
6
use Initx\Querabilis\Exception\NoSuchElementException;
7
8
trait HasDefaultRemoveAndElement
9
{
10 12
    public function remove(): Envelope
11
    {
12 12
        return $this->returnOrThrowNoSuchElement($this->poll());
0 ignored issues
show
Bug introduced by
It seems like poll() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

12
        return $this->returnOrThrowNoSuchElement($this->/** @scrutinizer ignore-call */ poll());
Loading history...
13
    }
14
15 11
    public function element(): Envelope
16
    {
17 11
        return $this->returnOrThrowNoSuchElement($this->peek());
0 ignored issues
show
Bug introduced by
It seems like peek() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

17
        return $this->returnOrThrowNoSuchElement($this->/** @scrutinizer ignore-call */ peek());
Loading history...
18
    }
19
20 18
    private function returnOrThrowNoSuchElement(?Envelope $envelope = null): Envelope
21
    {
22 18
        if (!$envelope) {
23 5
            throw new NoSuchElementException();
24
        }
25
26 13
        return $envelope;
27
    }
28
}
29