Completed
Push — master ( ff8fdd...4c5588 )
by ARCANEDEV
22s queued 11s
created

DeferredServicesProvider::registerLocalization()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
nc 1
nop 0
dl 0
loc 4
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php namespace Arcanedev\Localization\Providers;
2
3
use Arcanedev\Localization\Contracts\{
4
    LocalesManager as LocalesManagerContract,
5
    Localization as LocalizationContract,
6
    Negotiator as NegotiatorContract,
7
    RouteTranslator as RouteTranslatorContract
8
};
9
use Arcanedev\Localization\Localization;
10
use Arcanedev\Localization\Utilities\{LocalesManager, Negotiator, RouteTranslator};
11
use Arcanedev\Support\Providers\ServiceProvider;
12
use Illuminate\Contracts\Support\DeferrableProvider;
13
14
/**
15
 * Class     DeferredServicesProvider
16
 *
17
 * @package  Arcanedev\Localization\Providers
18
 * @author   ARCANEDEV <[email protected]>
19
 */
20
class DeferredServicesProvider extends ServiceProvider implements DeferrableProvider
21
{
22
    /* -----------------------------------------------------------------
23
     |  Main Methods
24
     | -----------------------------------------------------------------
25
     */
26
27
    /**
28
     * Register the service provider.
29
     */
30 268
    public function register(): void
31
    {
32 268
        $this->registerLocalization();
33 268
        $this->registerRouteTranslator();
34 268
        $this->registerLocalesManager();
35 268
        $this->registerLocaleNegotiator();
36 268
    }
37
38
    /**
39
     * Get the services provided by the provider.
40
     *
41
     * @return array
42
     */
43 4
    public function provides()
44
    {
45
        return [
46 4
            LocalizationContract::class,
47
            RouteTranslatorContract::class,
48
            LocalesManagerContract::class,
49
            NegotiatorContract::class,
50
        ];
51
    }
52
53
    /* -----------------------------------------------------------------
54
     |  Services
55
     | -----------------------------------------------------------------
56
     */
57
58
    /**
59
     * Register Localization.
60
     */
61 268
    private function registerLocalization()
62
    {
63 268
        $this->singleton(LocalizationContract::class, Localization::class);
64 268
    }
65
66
    /**
67
     * Register RouteTranslator utility.
68
     */
69 268
    private function registerRouteTranslator()
70
    {
71 268
        $this->singleton(RouteTranslatorContract::class, RouteTranslator::class);
72 268
    }
73
74
    /**
75
     * Register LocalesManager utility.
76
     */
77 268
    private function registerLocalesManager()
78
    {
79 268
        $this->singleton(LocalesManagerContract::class, LocalesManager::class);
80 268
    }
81
82
    /**
83
     * Register LocaleNegotiator utility.
84
     */
85 268
    private function registerLocaleNegotiator()
86
    {
87
        $this->bind(NegotiatorContract::class, function ($app) {
88
            /** @var  \Arcanedev\Localization\Contracts\LocalesManager  $manager */
89 14
            $manager = $app[LocalesManagerContract::class];
90
91 14
            return new Negotiator(
92 14
                $manager->getDefaultLocale(),
93 14
                $manager->getSupportedLocales()
94
            );
95 268
        });
96 268
    }
97
}
98