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

UtilitiesServiceProvider::provides()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 8
nc 1
nop 0
dl 0
loc 11
ccs 0
cts 8
cp 0
crap 2
rs 9.4285
c 0
b 0
f 0
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