Completed
Pull Request — master (#114)
by ARCANEDEV
06:44
created

UtilitiesServiceProvider   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 72
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 90.91%

Importance

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

5 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 8 1
A registerRouteTranslator() 0 6 1
A provides() 0 8 1
A registerLocaleNegotiator() 0 12 1
A registerLocalesManager() 0 4 1
1
<?php namespace Arcanedev\Localization\Providers;
2
3
use Arcanedev\Localization\Contracts\LocalesManager as LocalesManagerContract;
4
use Arcanedev\Localization\Contracts\Negotiator as NegotiatorContract;
5
use Arcanedev\Localization\Contracts\RouteTranslator as RouteTranslatorContract;
6
use Arcanedev\Localization\Utilities\LocalesManager;
7
use Arcanedev\Localization\Utilities\Negotiator;
8
use Arcanedev\Localization\Utilities\RouteTranslator;
9
use Arcanedev\Support\ServiceProvider;
10
11
/**
12
 * Class     UtilitiesServiceProvider
13
 *
14
 * @package  Arcanedev\Localization\Providers
15
 * @author   ARCANEDEV <[email protected]>
16
 */
17
class UtilitiesServiceProvider extends ServiceProvider
18
{
19
    /* -----------------------------------------------------------------
20
     |  Main Methods
21
     | -----------------------------------------------------------------
22
     */
23
24
    /**
25
     * Register the service provider.
26
     */
27 378
    public function register()
28
    {
29 378
        parent::register();
30
31 378
        $this->registerRouteTranslator();
32 378
        $this->registerLocalesManager();
33 378
        $this->registerLocaleNegotiator();
34 378
    }
35
36
    /**
37
     * Get the services provided by the provider.
38
     *
39
     * @return array
40
     */
41
    public function provides()
42
    {
43
        return [
44
            RouteTranslatorContract::class,
45
            LocalesManagerContract::class,
46
            NegotiatorContract::class,
47
        ];
48
    }
49
50
    /* -----------------------------------------------------------------
51
     |  Utilities
52
     | -----------------------------------------------------------------
53
     */
54
55
    /**
56
     * Register RouteTranslator utility.
57
     */
58
    private function registerRouteTranslator()
59
    {
60 378
        $this->singleton(RouteTranslatorContract::class, function ($app) {
61 378
            return new RouteTranslator($app['translator']);
62 378
        });
63 378
    }
64
65
    /**
66
     * Register LocalesManager utility.
67
     */
68 378
    private function registerLocalesManager()
69
    {
70 378
        $this->singleton(LocalesManagerContract::class, LocalesManager::class);
71 378
    }
72
73
    /**
74
     * Register LocaleNegotiator utility.
75
     */
76
    private function registerLocaleNegotiator()
77
    {
78 378
        $this->bind(NegotiatorContract::class, function ($app) {
79
            /** @var  \Arcanedev\Localization\Contracts\LocalesManager  $manager */
80 21
            $manager = $app[LocalesManagerContract::class];
81
82 21
            return new Negotiator(
83 21
                $manager->getDefaultLocale(),
84 21
                $manager->getSupportedLocales()
85
            );
86 378
        });
87 378
    }
88
}
89