Module   B
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 16

Test Coverage

Coverage 100%

Importance

Changes 18
Bugs 3 Features 3
Metric Value
wmc 8
c 18
b 3
f 3
lcom 1
cbo 16
dl 0
loc 72
rs 8.4615
ccs 38
cts 38
cp 1

5 Methods

Rating   Name   Duplication   Size   Complexity  
A boot() 0 4 1
A register() 0 6 1
A registerServices() 0 15 1
A loadConfigurations() 0 17 4
A registerEventListener() 0 8 1
1
<?php
2
3
namespace OpenTribes\Core\Silex;
4
5
6
use Igorw\Silex\ConfigServiceProvider;
7
use Mustache\Silex\Provider\MustacheServiceProvider;
8
use OpenTribes\Core\Silex\EventListener\BeforeAfterListener;
9
use OpenTribes\Core\Silex\EventListener\MustacheListener;
10
use OpenTribes\Core\Silex\Provider\CommonServiceProvider;
11
use OpenTribes\Core\Silex\Provider\ControllerServiceProvider;
12
use OpenTribes\Core\Silex\Provider\RepositoryServiceProvider;
13
use OpenTribes\Core\Silex\Provider\RouteServiceProvider;
14
use OpenTribes\Core\Silex\Provider\ServiceProvider;
15
use OpenTribes\Core\Silex\Provider\UseCaseServiceProvide;
16
use OpenTribes\Core\Silex\Provider\ValidatorServiceProvider;
17
use Silex\Application;
18
use Silex\Provider\DoctrineServiceProvider;
19
use Silex\Provider\ServiceControllerServiceProvider;
20
use Silex\Provider\SessionServiceProvider;
21
use Silex\ServiceProviderInterface;
22
use RecursiveDirectoryIterator;
23
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
24
25
class Module implements ServiceProviderInterface{
26
27
    /**
28
     * Bootstraps the application.
29
     *
30
     * This method is called after all services are registered
31
     * and should be used for "dynamic" configuration (whenever
32
     * a service must be requested).
33
     */
34 35
    public function boot(Application $app)
35 1
    {
36
        // TODO: Implement boot() method.
37 35
    }
38
39
40
    /**
41
     * Registers services on the given app.
42
     *
43
     * This method should only be used to configure services and parameters.
44
     * It should not get services.
45
     *
46
     * @param Application $app An Application instance
47
     */
48 35
    public function register(Application $app)
49
    {
50 35
        $this->loadConfigurations($app);
51 35
        $this->registerServices($app);
52 35
        $this->registerEventListener($app);
53 35
    }
54
55
56 35
    private function registerServices(Application $app)
57
    {
58 35
        $app->register(new ServiceControllerServiceProvider());
59 35
        $app->register(new DoctrineServiceProvider());
60 35
        $app->register(new SessionServiceProvider());
61 35
        $app->register(new ValidatorServiceProvider());
62 35
        $app->register(new MustacheServiceProvider());
63 35
        $app->register(new ServiceProvider());
64 35
        $app->register(new RepositoryServiceProvider());
65 35
        $app->register(new UseCaseServiceProvide());
66 35
        $app->register(new ControllerServiceProvider());
67 35
        $app->register(new CommonServiceProvider());
68 35
        $app->mount('/', new RouteServiceProvider());
69
70 35
    }
71 35
    private function loadConfigurations(Application $app)
72
    {
73 35
        $environment = $app['env'];
74 35
        $configDir = realpath(__DIR__.'/../config/'.$environment);
75 35
        if(!$configDir){
76 1
            throw new \Exception('Config folder for environment '.$environment.' not exists');
77
        }
78 35
        $iterator = new RecursiveDirectoryIterator($configDir, RecursiveDirectoryIterator::SKIP_DOTS);
79
        /**
80
         * @var \SplFileInfo $object
81
         */
82 35
        foreach ($iterator as $path => $object) {
83 35
            if ($object->isFile()) {
84 35
                $app->register(new ConfigServiceProvider($path));
85 35
            }
86 35
        }
87 35
    }
88 35
    private function registerEventListener(Application $app){
89
        /**
90
         * @var EventDispatcherInterface $dispatcher
91
         */
92 35
        $dispatcher = $app['dispatcher'];
93 35
        $dispatcher->addSubscriber(new MustacheListener($app['mustache']));
94 35
        $dispatcher->addSubscriber(new BeforeAfterListener($app,$app['callback_resolver']));
95
    }
96
}