DeckProj::__construct()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 4

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 6
c 1
b 0
f 0
nc 4
nop 1
dl 0
loc 9
ccs 7
cts 7
cp 1
crap 4
rs 10
1
<?php
2
3
namespace App\Card;
4
5
class DeckProj
6
{
7
    protected $cards = [];
8
9 16
    public function __construct($numberOfDecks = 1)
10
    {
11 16
        $suits = ['Hearts', 'Diamonds', 'Clubs', 'Spades'];
12 16
        $values = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'Jack', 'Queen', 'King', 'Ace'];
13
14 16
        for ($i = 0; $i < $numberOfDecks; $i++) {
15 16
            foreach ($suits as $suit) {
16 16
                foreach ($values as $value) {
17 16
                    $this->cards[] = new CardGraphic($suit, $value);
18
                }
19
            }
20
        }
21
    }
22
23 16
    public function shuffle(): void
24
    {
25 16
        shuffle($this->cards);
26
    }
27
28 9
    public function drawCard(): ?Card
29
    {
30 9
        return array_pop($this->cards) ?? null;
31
    }
32
33 1
    public function remainingCardsCount(): int
34
    {
35 1
        return count($this->cards);
36
    }
37
38 1
    public function getCards(): array
39
    {
40 1
        return $this->cards;
41
    }
42
}
43