Completed
Pull Request — master (#18)
by Arnaud
04:00
created

ConfigurationFactory   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 2
Bugs 1 Features 0
Metric Value
wmc 4
c 2
b 1
f 0
lcom 1
cbo 4
dl 0
loc 65
ccs 20
cts 20
cp 1
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A createActionConfiguration() 0 9 1
A createApplicationConfiguration() 0 9 1
A createAdminConfiguration() 0 9 1
A getApplicationConfiguration() 0 4 1
1
<?php
2
3
namespace LAG\AdminBundle\Configuration\Factory;
4
5
use LAG\AdminBundle\Action\Configuration\ActionConfiguration;
6
use LAG\AdminBundle\Admin\AdminInterface;
7
use LAG\AdminBundle\Admin\Configuration\AdminConfiguration;
8
use LAG\AdminBundle\Application\Configuration\ApplicationConfiguration;
9
use Symfony\Component\OptionsResolver\OptionsResolver;
10
11
class ConfigurationFactory
12
{
13
    /**
14
     * @var ApplicationConfiguration
15
     */
16
    protected $applicationConfiguration;
17
18
    /**
19
     * Create an action configuration object.
20
     *
21
     * @param $actionName
22
     * @param AdminInterface|null $admin
23
     * @param array $configuration
24
     * @return ActionConfiguration
25
     */
26 1
    public function createActionConfiguration($actionName, AdminInterface $admin = null, array $configuration = [])
27
    {
28 1
        $resolver = new OptionsResolver();
29 1
        $actionConfiguration = new ActionConfiguration($actionName, $admin);
0 ignored issues
show
Bug introduced by
It seems like $admin defined by parameter $admin on line 26 can be null; however, LAG\AdminBundle\Action\C...guration::__construct() does not accept null, maybe add an additional type check?

It seems like you allow that null is being passed for a parameter, however the function which is called does not seem to accept null.

We recommend to add an additional type check (or disallow null for the parameter):

function notNullable(stdClass $x) { }

// Unsafe
function withoutCheck(stdClass $x = null) {
    notNullable($x);
}

// Safe - Alternative 1: Adding Additional Type-Check
function withCheck(stdClass $x = null) {
    if ($x instanceof stdClass) {
        notNullable($x);
    }
}

// Safe - Alternative 2: Changing Parameter
function withNonNullableParam(stdClass $x) {
    notNullable($x);
}
Loading history...
30 1
        $actionConfiguration->configureOptions($resolver);
31 1
        $actionConfiguration->setParameters($resolver->resolve($configuration));
32
33 1
        return $actionConfiguration;
34
    }
35
36
    /**
37
     * Create an application configuration object.
38
     *
39
     * @param array $configuration
40
     * @return ApplicationConfiguration
41
     */
42 8
    public function createApplicationConfiguration(array $configuration = [])
43
    {
44 8
        $resolver = new OptionsResolver();
45 8
        $this->applicationConfiguration = new ApplicationConfiguration();
46 8
        $this->applicationConfiguration->configureOptions($resolver);
47 8
        $this->applicationConfiguration->setParameters($resolver->resolve($configuration));
48
49 8
        return $this->applicationConfiguration;
50
    }
51
52
    /**
53
     * Create an admin configuration object.
54
     *
55
     * @param array $configuration
56
     * @return AdminConfiguration
57
     */
58 5
    public function createAdminConfiguration(array $configuration = [])
59
    {
60 5
        $resolver = new OptionsResolver();
61 5
        $adminConfiguration = new AdminConfiguration($this->applicationConfiguration);
62 5
        $adminConfiguration->configureOptions($resolver);
63 5
        $adminConfiguration->setParameters($resolver->resolve($configuration));
64
65 5
        return $adminConfiguration;
66
    }
67
68
    /**
69
     * @return ApplicationConfiguration
70
     */
71 1
    public function getApplicationConfiguration()
72
    {
73 1
        return $this->applicationConfiguration;
74
    }
75
}
76