Completed
Push — master ( fe9181...bc0bfa )
by ARCANEDEV
12s
created

UtilitiesServiceProvider   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 74.19%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
dl 0
loc 74
c 3
b 0
f 0
ccs 23
cts 31
cp 0.7419
rs 10
wmc 5
lcom 1
cbo 4

5 Methods

Rating   Name   Duplication   Size   Complexity  
A provides() 0 11 1
A registerRouteTranslator() 0 7 1
A register() 0 6 1
A registerLocalesManager() 0 5 1
A registerLocaleNegotiator() 0 13 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 Functions
21
     | ------------------------------------------------------------------------------------------------
22
     */
23
    /**
24
     * Register the service provider.
25
     */
26 192
    public function register()
27
    {
28 192
        $this->registerRouteTranslator();
29 192
        $this->registerLocalesManager();
30 192
        $this->registerLocaleNegotiator();
31 192
    }
32
33
    /**
34
     * Get the services provided by the provider.
35
     *
36
     * @return array
37
     */
38
    public function provides()
39
    {
40
        return [
41
            RouteTranslatorContract::class,
42
            'arcanedev.localization.translator',
43
            LocalesManagerContract::class,
44
            'arcanedev.localization.locales-manager',
45
            NegotiatorContract::class,
46
            'arcanedev.localization.negotiator',
47
        ];
48
    }
49
50
    /* ------------------------------------------------------------------------------------------------
51
     |  Utilities
52
     | ------------------------------------------------------------------------------------------------
53
     */
54
    /**
55
     * Register RouteTranslator utility.
56
     */
57 192
    private function registerRouteTranslator()
58
    {
59
        $this->singleton(RouteTranslatorContract::class, function ($app) {
60 192
            return new RouteTranslator($app['translator']);
61 192
        });
62 192
        $this->singleton('arcanedev.localization.translator', RouteTranslatorContract::class);
63 192
    }
64
65
    /**
66
     * Register LocalesManager utility.
67
     */
68 192
    private function registerLocalesManager()
69
    {
70 192
        $this->singleton(LocalesManagerContract::class, LocalesManager::class);
71 192
        $this->singleton('arcanedev.localization.locales-manager', LocalesManagerContract::class);
72 192
    }
73
74
    /**
75
     * Register LocaleNegotiator utility.
76
     */
77
    private function registerLocaleNegotiator()
78
    {
79 192
        $this->bind(NegotiatorContract::class, function ($app) {
80
            /** @var  \Arcanedev\Localization\Contracts\LocalesManager  $manager */
81 21
            $manager = $app[LocalesManagerContract::class];
82
83 21
            return new Negotiator(
84 21
                $manager->getDefaultLocale(),
85 21
                $manager->getSupportedLocales()
86 7
            );
87 192
        });
88 192
        $this->bind('arcanedev.localization.negotiator', NegotiatorContract::class);
89 192
    }
90
}
91