Completed
Push — master ( eb283a...ad5b4c )
by Stéphane
02:51
created

src/Configuration/Environment.php (2 issues)

mismatching argument types.

Documentation Minor

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace Onigoetz\Deployer\Configuration;
4
5
use Onigoetz\Deployer\Configuration\Containers\ConfigurationContainer;
6
7
class Environment extends ConfigurationContainer
8
{
9
    /**
10
     * Find if there are some overrides for a configuration
11
     *
12
     * @param string $key
13
     * @return bool
14
     */
15 27
    protected function hasOverrides($key)
16
    {
17 27
        if (array_key_exists('overrides', $this->data) && array_key_exists($key, $this->data['overrides'])) {
18 9
            return true;
19
        }
20
21 21
        return false;
22
    }
23
24 27
    public function getSource()
25
    {
26 27
        $source = $this->getValueOrFail('source', 'no source specified');
27
28 24
        $resolvedSource = $this->manager->get('source', $source);
29
30 21
        if (!$this->hasOverrides('source')) {
31 15
            return $resolvedSource;
32
        }
33
34 6
        return Source::make('override', $this->data['overrides']['source'], $this->manager, $resolvedSource);
0 ignored issues
show
$resolvedSource is of type object<Onigoetz\Deployer...ConfigurationContainer>, but the function expects a null|object<Onigoetz\Dep...r\Configuration\Source>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
35
    }
36
37 15
    public function getServers()
38
    {
39 15
        $servers = $this->getValueOrFail('servers', 'no servers specified');
40
41 15
        $resolvedServers = [];
42 15
        foreach ($servers as $server) {
43 15
            $resolvedServers[] = $this->manager->get('server', $server);
44 10
        }
45
46 15
        return $resolvedServers;
47
    }
48
49 21
    public function getDirectories()
50
    {
51 21
        $directories = $this->manager->getDefaultDirectories();
52
53 21
        if (!$this->hasOverrides('directories')) {
54 18
            return $directories;
55
        }
56
57 6
        return new Directories('overriden', $this->data['overrides']['directories'], $this->manager, $directories);
0 ignored issues
show
$directories is of type object<Onigoetz\Deployer...figuration\Directories>, but the function expects a null|object<self>.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
58
    }
59
60 12
    public function getTasks($event)
61
    {
62 12
        $tasks = $this->getValueOrDefault('tasks', []);
63
64 12
        if (!array_key_exists($event, $tasks)) {
65 3
            return [];
66
        }
67
68 9
        $groups = $tasks[$event];
69 9
        $actions = [];
70
71 9
        foreach ($groups as $group) {
72
            /**
73
             * @var Tasks
74
             */
75 9
            $items = $this->manager->get('tasks', $group);
76 9
            foreach ($items->getTasks() as $name => $action) {
77 9
                if (is_numeric($name)) {
78 6
                    $actions[] = $action;
79 6
                    continue;
80
                }
81
82 5
                $actions[$name] = $action;
83 6
            }
84 6
        }
85
86 9
        return $actions;
87
    }
88
89
    /**
90
     * {@inheritdoc}
91
     */
92 24
    public function checkValidity()
93
    {
94 24
        if (!$this->getSource()->isValid()) {
95 3
            return false;
96
        }
97
98 15
        if (!$this->getDirectories()->isValid()) {
99 3
            return false;
100
        }
101
102
        /**
103
         * @var Server
104
         */
105 12
        foreach ($this->getServers() as $server) {
106 12
            if (!$server->isValid()) {
107 6
                return false;
108
            }
109 6
        }
110
111 9
        return true;
112
    }
113
114 3
    public function getSubstitutions($binary)
115
    {
116
        return [
117 3
            '{{root}}' => $this->getDirectories()->getRoot(),
118 3
            '{{binaries}}' => $this->getDirectories()->getBinaries(),
119 3
            '{{binary}}' => $binary,
120 3
            '{{deploy}}' => $this->getDirectories()->getDeploy(),
121 3
            '{{environment}}' => $this->name,
122 2
        ];
123
    }
124
}
125