BoardingCardCollection   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 6
c 4
b 0
f 0
lcom 1
cbo 1
dl 0
loc 56
rs 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getBoardingCards() 0 4 1
A getInitialBoardingCard() 0 9 2
A push() 0 4 1
A unshift() 0 4 1
1
<?php
2
namespace ItinerarySorter\Model;
3
4
use ItinerarySorter\Exception\EmptyItineraryException;
5
6
class BoardingCardCollection
7
{
8
    /**
9
     * @var BoardingCard[]
10
     */
11
    private $boardingCards;
12
13
    /**
14
     * @param BoardingCard[] $boardingCards
15
     */
16
    public function __construct(array $boardingCards)
17
    {
18
        $this->boardingCards = $boardingCards;
19
    }
20
21
    /**
22
     * @return BoardingCard[]
23
     */
24
    public function getBoardingCards()
25
    {
26
        return $this->boardingCards;
27
    }
28
29
    /**
30
     * @return BoardingCard
31
     * @throws EmptyItineraryException
32
     */
33
    public function getInitialBoardingCard()
34
    {
35
        $initialBoardingCard = reset($this->boardingCards);
36
        if (!$initialBoardingCard) {
37
            throw new EmptyItineraryException();
38
        }
39
40
        return $initialBoardingCard;
41
    }
42
43
    /**
44
     * @param BoardingCard $boardingCard
45
     */
46
    public function push(BoardingCard $boardingCard)
47
    {
48
        array_push($this->boardingCards, $boardingCard);
49
    }
50
51
    /**
52
     * @todo potential performance drop here
53
     * php arrays are evil, has to be reindexed for this operation, which would cost O(1) in real array.
54
     *
55
     * @param BoardingCard $boardingCard
56
     */
57
    public function unshift(BoardingCard $boardingCard)
58
    {
59
        array_unshift($this->boardingCards, $boardingCard);
60
    }
61
}
62