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

UtilitiesServiceProvider::provides()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 5
nc 1
nop 0
dl 0
loc 8
ccs 0
cts 2
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 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