Completed
Pull Request — master (#83)
by ARCANEDEV
07:38 queued 02:49
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 0
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 189
    public function register()
27
    {
28 189
        $this->registerRouteTranslator();
29 189
        $this->registerLocalesManager();
30 189
        $this->registerLocaleNegotiator();
31 189
    }
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 189
    private function registerRouteTranslator()
58
    {
59
        $this->singleton(RouteTranslatorContract::class, function ($app) {
60 189
            return new RouteTranslator($app['translator']);
61 189
        });
62 189
        $this->singleton('arcanedev.localization.translator', RouteTranslatorContract::class);
63 189
    }
64
65
    /**
66
     * Register LocalesManager utility.
67
     */
68 189
    private function registerLocalesManager()
69
    {
70
        $this->singleton(LocalesManagerContract::class, function ($app) {
71 189
            return new LocalesManager($app);
72 189
        });
73 189
        $this->singleton('arcanedev.localization.locales-manager', LocalesManagerContract::class);
74 189
    }
75
76
    /**
77
     * Register LocaleNegotiator utility.
78
     */
79
    private function registerLocaleNegotiator()
80
    {
81 189
        $this->bind(NegotiatorContract::class, function ($app) {
82
            /** @var  \Arcanedev\Localization\Contracts\LocalesManager  $manager */
83 21
            $manager = $app[LocalesManagerContract::class];
84
85 21
            return new Negotiator(
86 21
                $manager->getDefaultLocale(),
87 21
                $manager->getSupportedLocales()
88
            );
89 189
        });
90 189
        $this->bind('arcanedev.localization.negotiator', NegotiatorContract::class);
91 189
    }
92
}
93