DeferredServicesProvider   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 89
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 4
dl 0
loc 89
ccs 31
cts 31
cp 1
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A register() 0 6 1
A provides() 0 8 1
A registerTransManager() 0 6 1
A registerTransChecker() 0 10 1
A registerLangPublisher() 0 10 1
A getPaths() 0 7 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Arcanedev\LaravelLang\Providers;
6
7
use Arcanedev\LaravelLang\{TransChecker, TransManager, TransPublisher};
8
use Arcanedev\LaravelLang\Contracts\TransChecker as TransCheckerContract;
9
use Arcanedev\LaravelLang\Contracts\TransManager as TransManagerContract;
10
use Arcanedev\LaravelLang\Contracts\TransPublisher as TransPublisherContract;
11
use Arcanedev\Support\Providers\ServiceProvider;
12
use Illuminate\Contracts\Foundation\Application;
13
use Illuminate\Contracts\Support\DeferrableProvider;
14
15
/**
16
 * Class     DeferredServicesProvider
17
 *
18
 * @author   ARCANEDEV <[email protected]>
19
 */
20
class DeferredServicesProvider extends ServiceProvider implements DeferrableProvider
21
{
22
    /* -----------------------------------------------------------------
23
     |  Main Methods
24
     | -----------------------------------------------------------------
25
     */
26
27
    /**
28
     * Register any application services.
29
     */
30 174
    public function register(): void
31
    {
32 174
        $this->registerTransManager();
33 174
        $this->registerTransChecker();
34 174
        $this->registerLangPublisher();
35 174
    }
36
37
    /**
38
     * Get the services provided by the provider.
39
     *
40
     * @return array
41
     */
42 6
    public function provides(): array
43
    {
44
        return [
45 6
            TransManagerContract::class,
46
            TransCheckerContract::class,
47
            TransPublisherContract::class,
48
        ];
49
    }
50
51
    /* -----------------------------------------------------------------
52
     |  Services
53
     | -----------------------------------------------------------------
54
     */
55
56
    /**
57
     * Register the trans manager.
58
     */
59 174
    private function registerTransManager(): void
60
    {
61 87
        $this->singleton(TransManagerContract::class, function (Application $app) {
62 132
            return new TransManager($app['files'], $this->getPaths($app));
63 174
        });
64 174
    }
65
66
    /**
67
     * Register the trans checker.
68
     */
69 174
    private function registerTransChecker(): void
70
    {
71 87
        $this->singleton(TransCheckerContract::class, function (Application $app) {
72 48
            return new TransChecker(
73 48
                $app['translator'],
74 24
                $app[TransManagerContract::class],
75 48
                $app['config']->get('laravel-lang', [])
76
            );
77 174
        });
78 174
    }
79
80
    /**
81
     * Register the lang publisher.
82
     */
83 174
    private function registerLangPublisher(): void
84
    {
85 87
        $this->singleton(TransPublisherContract::class, function (Application $app) {
86 84
            return new TransPublisher(
87 84
                $app['files'],
88 42
                $app[TransManagerContract::class],
89 84
                $app->langPath()
90
            );
91 174
        });
92 174
    }
93
94
    /**
95
     * Get the localization paths.
96
     *
97
     * @param  \Illuminate\Contracts\Foundation\Application  $app
98
     *
99
     * @return array
100
     */
101 132
    private function getPaths(Application $app): array
102
    {
103
        return [
104 132
            'app'     => $app->langPath(),
105 132
            'vendors' => $app['config']->get('laravel-lang.vendor', []),
106
        ];
107
    }
108
}
109