Completed
Push — master ( c12486...773bc0 )
by Mahmoud
03:34
created

MainServiceProvider::boot()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 6
rs 9.4285
cc 1
eloc 4
nc 1
nop 0
1
<?php
2
3
namespace App\Port\Provider\Providers;
4
5
use App\Port\Provider\Abstracts\ServiceProviderAbstract;
6
use App\Port\Provider\Traits\PortServiceProviderTrait;
7
use App\Port\Routes\Providers\RoutesServiceProvider;
8
use Barryvdh\Cors\ServiceProvider as CorsServiceProvider;
9
use Brotzka\DotenvEditor\DotenvEditorServiceProvider;
10
use Dingo\Api\Provider\LaravelServiceProvider as DingoApiServiceProvider;
11
use Jenssegers\Agent\AgentServiceProvider;
12
use Laravel\Socialite\SocialiteServiceProvider;
13
use Prettus\Repository\Providers\RepositoryServiceProvider;
14
use App\Port\Butler\Portals\PortButler;
15
16
/**
17
 * Class MainServiceProvider
18
 * The main Service Provider where all Service Providers gets registered
19
 * this is the only Service Provider that gets injected in the Config/app.php.
20
 *
21
 * A.K.A app/Providers/AppServiceProvider.php
22
 *
23
 * Class PortServiceProvider
24
 *
25
 * @author  Mahmoud Zalt <[email protected]>
26
 */
27
class MainServiceProvider extends ServiceProviderAbstract
28
{
29
30
    use PortServiceProviderTrait;
31
32
    /**
33
     * the new Models Factories Paths
34
     */
35
    const MODELS_FACTORY_PATH = '/app/Port/Factory';
36
37
    /**
38
     * Port internal Service Provides.
39
     *
40
     * @var array
41
     */
42
    private $serviceProviders = [
43
        DingoApiServiceProvider::class,
44
        CorsServiceProvider::class,
45
        RepositoryServiceProvider::class,
46
        RoutesServiceProvider::class,
47
        AgentServiceProvider::class,
48
        SocialiteServiceProvider::class,
49
        DotenvEditorServiceProvider::class,
50
    ];
51
52
    /**
53
     * Perform post-registration booting of services.
54
     */
55
    public function boot()
56
    {
57
        $this->registerServiceProviders(array_merge($this->getMainServiceProviders(), $this->serviceProviders));
58
        $this->autoLoadViewsFromContainers();
59
        $this->overrideDefaultFractalSerializer();
60
    }
61
62
    /**
63
     * Register bindings in the container.
64
     */
65
    public function register()
66
    {
67
        $this->app->bind('PortButler', function () {
68
            return $this->app->make(PortButler::class);
69
        });
70
71
        $this->changeTheDefaultDatabaseModelsFactoriesPath(self::MODELS_FACTORY_PATH);
72
        $this->publishContainersMigrationsFiles();
73
        $this->debugDatabaseQueries(true, true);
74
    }
75
76
}
77