Passed
Push — master ( 7b3f4e...3fa0cb )
by nicolas
05:02 queued 01:47
created

AbstractNightlyTaskCommand::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 6
ccs 0
cts 6
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 2
crap 2
1
<?php
2
3
namespace Dekalee\NightlyTaskBundle\Command;
4
5
use Dekalee\NightlyTaskBundle\Bag\TasksBag;
6
use Psr\Log\LoggerInterface;
7
use Symfony\Component\Console\Command\Command;
8
use Symfony\Component\Console\Descriptor\ApplicationDescription;
9
use Symfony\Component\Console\Input\InputInterface;
10
use Symfony\Component\Console\Output\OutputInterface;
11
12
/**
13
 * Class AbstractNightlyTaskCommand
14
 */
15
abstract class AbstractNightlyTaskCommand extends Command
16
{
17
    /**
18
     * @var InputInterface
19
     */
20
    protected $input;
21
22
    /**
23
     * @var OutputInterface
24
     */
25
    protected $output;
26
27
    /**
28
     * @var LoggerInterface
29
     */
30
    protected $logger;
31
32
    /**
33
     * @var TasksBag
34
     */
35
    private $taskBag;
36
37
    /**
38
     * @param TasksBag        $taskBag
39
     * @param LoggerInterface $logger
40
     */
41
    public function __construct(TasksBag $taskBag, LoggerInterface $logger)
42
    {
43
        parent::__construct();
44
        $this->logger = $logger;
45
        $this->taskBag = $taskBag;
46
    }
47
48
    /**
49
     * @return array
50
     */
51
    protected function getTasks()
52
    {
53
        return $this->taskBag->getTasks();
54
    }
55
56
    /**
57
     * Initialize fields
58
     *
59
     * @param InputInterface  $input
60
     * @param OutputInterface $output
61
     */
62
    protected function beforeExecute(InputInterface $input, OutputInterface $output)
63
    {
64
        $this->input = $input;
65
        $this->output = $output;
66
    }
67
68
    /**
69
     * Fill task lists
70
     */
71
    protected function fillTasks()
72
    {
73
        $description = new ApplicationDescription($this->getApplication());
0 ignored issues
show
Bug introduced by
It seems like $this->getApplication() can be null; however, __construct() does not accept null, maybe add an additional type check?

Unless you are absolutely sure that the expression can never be null because of other conditions, we strongly recommend to add an additional type check to your code:

/** @return stdClass|null */
function mayReturnNull() { }

function doesNotAcceptNull(stdClass $x) { }

// With potential error.
function withoutCheck() {
    $x = mayReturnNull();
    doesNotAcceptNull($x); // Potential error here.
}

// Safe - Alternative 1
function withCheck1() {
    $x = mayReturnNull();
    if ( ! $x instanceof stdClass) {
        throw new \LogicException('$x must be defined.');
    }
    doesNotAcceptNull($x);
}

// Safe - Alternative 2
function withCheck2() {
    $x = mayReturnNull();
    if ($x instanceof stdClass) {
        doesNotAcceptNull($x);
    }
}
Loading history...
74
        foreach ($description->getCommands() as $command) {
75
            if ($command instanceof NightlyCommandInterface) {
76
                $this->taskBag->addTask($command, $command->getPriority());
77
            }
78
        }
79
    }
80
}
81