Completed
Pull Request — master (#90)
by Arnaud
02:08
created

ConfigurationFactory::create()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 9
rs 9.6666
cc 1
eloc 6
nc 1
nop 1
1
<?php
2
3
namespace LAG\AdminBundle\Admin\Factory;
4
5
use LAG\AdminBundle\Admin\Configuration\AdminConfiguration;
6
use LAG\AdminBundle\Application\Configuration\ApplicationConfiguration;
7
use LAG\AdminBundle\Application\Configuration\ApplicationConfigurationStorage;
8
use Symfony\Component\OptionsResolver\OptionsResolver;
9
10
/**
11
 * Handle the creation of the admin configuration objects.
12
 */
13
class ConfigurationFactory
14
{
15
    /**
16
     * @var ApplicationConfiguration
17
     */
18
    private $applicationConfiguration;
19
    
20
    /**
21
     * ConfigurationFactory constructor.
22
     *
23
     * @param ApplicationConfigurationStorage $storage
24
     */
25
    public function __construct(ApplicationConfigurationStorage $storage)
26
    {
27
        $this->applicationConfiguration = $storage->getApplicationConfiguration();
28
    }
29
    
30
    /**
31
     * Create an admin configuration object, from the given configuration array and the configured application
32
     * configuration.
33
     *
34
     * @param array $configuration
35
     *
36
     * @return AdminConfiguration
37
     */
38
    public function create(array $configuration = [])
39
    {
40
        $resolver = new OptionsResolver();
41
        $adminConfiguration = new AdminConfiguration($this->applicationConfiguration);
42
        $adminConfiguration->configureOptions($resolver);
43
        $adminConfiguration->setParameters($resolver->resolve($configuration));
44
    
45
        return $adminConfiguration;
46
    }
47
}
48