Completed
Push — 5.1 ( c7eca6...1f8916 )
by Jarek
05:49
created

ServiceProvider   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 5
Bugs 2 Features 0
Metric Value
wmc 6
c 5
b 2
f 0
lcom 1
cbo 6
dl 0
loc 73
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A provides() 0 4 1
A boot() 0 6 1
A register() 0 6 1
A registerMutator() 0 8 1
A registerJoiner() 0 8 1
A registerParser() 0 8 1
1
<?php
2
3
namespace Sofa\Eloquence;
4
5
use Sofa\Eloquence\Builder;
6
use Sofa\Eloquence\Mutator\Mutator;
7
use Sofa\Eloquence\Relations\JoinerFactory;
8
use Sofa\Eloquence\Searchable\ParserFactory;
9
use Illuminate\Support\ServiceProvider as BaseProvider;
10
11
/**
12
 * @codeCoverageIgnore
13
 */
14
class ServiceProvider extends BaseProvider
15
{
16
    public function boot()
17
    {
18
        Builder::setJoinerFactory(new JoinerFactory);
19
20
        Builder::setParserFactory(new ParserFactory);
21
    }
22
23
    /**
24
     * Register the service provider.
25
     *
26
     * @return void
27
     */
28
    public function register()
29
    {
30
        $this->registerMutator();
31
        $this->registerJoiner();
32
        $this->registerParser();
33
    }
34
35
    /**
36
     * Register attribute mutator service.
37
     *
38
     * @return void
39
     */
40
    protected function registerMutator()
41
    {
42
        $this->app->singleton('eloquence.mutator', function () {
43
            return new Mutator;
44
        });
45
46
        $this->app->alias('eloquence.mutator', 'Sofa\Eloquence\Contracts\Mutator');
47
    }
48
49
    /**
50
     * Register relation joiner factory.
51
     *
52
     * @return void
53
     */
54
    protected function registerJoiner()
55
    {
56
        $this->app->singleton('eloquence.joiner', function () {
57
            return new JoinerFactory;
58
        });
59
60
        $this->app->alias('eloquence.joiner', 'Sofa\Eloquence\Contracts\Relations\JoinerFactory');
61
    }
62
63
    /**
64
     * Register serachable parser factory.
65
     *
66
     * @return void
67
     */
68
    protected function registerParser()
69
    {
70
        $this->app->singleton('eloquence.parser', function () {
71
            return new ParserFactory;
72
        });
73
74
        $this->app->alias('eloquence.parser', 'Sofa\Eloquence\Contracts\Relations\ParserFactory');
75
    }
76
77
    /**
78
     * Get the services provided by the provider.
79
     *
80
     * @return array
81
     */
82
    public function provides()
83
    {
84
        return ['eloquence.mutator', 'eloquence.joiner', 'eloquence.parser'];
85
    }
86
}
87