AnalogueServiceProvider::provides()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
cc 1
eloc 2
c 2
b 1
f 0
nc 1
nop 0
dl 0
loc 4
rs 10
1
<?php
2
3
namespace Analogue\ORM;
4
5
use Illuminate\Support\ServiceProvider;
6
use Analogue\ORM\System\Manager;
7
use Analogue\ORM\Drivers\Manager as DriverManager;
8
use Analogue\ORM\Drivers\IlluminateDriver;
9
use Analogue\ORM\Drivers\IlluminateConnectionProvider;
10
11
/**
12
 * Integrate Analogue into Laravel
13
 */
14
class AnalogueServiceProvider extends ServiceProvider
15
{
16
    /**
17
     * Indicates if loading of the provider is deferred.
18
     *
19
     * @var bool
20
     */
21
    protected $defer = false;
22
23
    public function boot()
24
    {
25
        $manager = $this->app->make('analogue');
26
27
        $manager->registerPlugin('Analogue\ORM\Plugins\Timestamps\TimestampsPlugin');
28
        $manager->registerPlugin('Analogue\ORM\Plugins\SoftDeletes\SoftDeletesPlugin');
29
    }
30
31
    /**
32
     * Register the service provider.
33
     *
34
     * @return void
35
     */
36
    public function register()
37
    {
38
        $this->app->singleton('analogue', function ($app) {
39
40
            $db = $app['db'];
41
42
            $connectionProvider = new IlluminateConnectionProvider($db);
43
44
            $illuminate = new IlluminateDriver($connectionProvider);
45
46
            $driverManager = new DriverManager;
47
48
            $driverManager->addDriver($illuminate);
49
50
            $event = $app->make('events');
51
52
            return new Manager($driverManager, $event);
53
        });
54
    }
55
    
56
    /**
57
     * Get the services provided by the provider.
58
     *
59
     * @return array
60
     */
61
    public function provides()
62
    {
63
        return ['analogue'];
64
    }
65
}
66