Completed
Push — master ( 0b8e0b...b6ebb2 )
by Aimeos
18:19
created

ShopServiceProvider::boot()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 1
eloc 7
c 3
b 0
f 0
nc 1
nop 0
dl 0
loc 11
rs 9.4285
1
<?php
2
3
/**
4
 * @license MIT, http://opensource.org/licenses/MIT
5
 * @copyright Aimeos (aimeos.org), 2015-2016
6
 * @package laravel
7
 */
8
9
10
namespace Aimeos\Shop;
11
12
use Illuminate\Support\ServiceProvider;
13
use Illuminate\Support\Facades\Blade;
14
use Illuminate\Support\Facades\Input;
15
use Illuminate\Support\Facades\Route;
16
17
18
/**
19
 * Aimeos shop service provider for Laravel
20
 * @package laravel
21
 */
22
class ShopServiceProvider extends ServiceProvider {
23
24
	/**
25
	 * Indicates if loading of the provider is deferred.
26
	 *
27
	 * @var bool
28
	 */
29
	protected $defer = false;
30
31
32
	/**
33
	 * Bootstrap the application events.
34
	 *
35
	 * @return void
36
	 */
37
	public function boot()
38
	{
39
		$ds = DIRECTORY_SEPARATOR;
40
		$basedir = dirname( dirname( __DIR__ ) ) . $ds;
41
42
		$this->loadRoutesFrom( $basedir . 'routes.php' );
43
		$this->loadViewsFrom( $basedir . 'views', 'shop' );
44
45
		$this->publishes( [ $basedir . 'config/shop.php' => config_path( 'shop.php' ) ], 'config' );
46
		$this->publishes( [ dirname( $basedir ) . $ds . 'public' => public_path( 'packages/aimeos/shop' ) ], 'public' );
47
	}
48
49
50
	/**
51
	 * Register the service provider.
52
	 *
53
	 * @return void
54
	 */
55
	public function register()
56
	{
57
		$this->mergeConfigFrom( dirname( dirname( __DIR__ ) ) . DIRECTORY_SEPARATOR . 'default.php', 'shop');
58
59
		$this->app->singleton('Aimeos\Shop\Base\Aimeos', function($app) {
60
			return new \Aimeos\Shop\Base\Aimeos($app['config']);
61
		});
62
63
		$this->app->singleton('Aimeos\Shop\Base\Config', function($app) {
64
			return new \Aimeos\Shop\Base\Config($app['config'], $app['Aimeos\Shop\Base\Aimeos']);
65
		});
66
67
		$this->app->singleton('Aimeos\Shop\Base\I18n', function($app) {
68
			return new \Aimeos\Shop\Base\I18n($this->app['config'], $app['Aimeos\Shop\Base\Aimeos']);
69
		});
70
71
		$this->app->singleton('Aimeos\Shop\Base\Locale', function($app) {
72
			return new \Aimeos\Shop\Base\Locale($app['config']);
73
		});
74
75
		$this->app->singleton('Aimeos\Shop\Base\Context', function($app) {
76
			return new \Aimeos\Shop\Base\Context($app['session.store'], $app['Aimeos\Shop\Base\Config'], $app['Aimeos\Shop\Base\Locale'], $app['Aimeos\Shop\Base\I18n']);
77
		});
78
79
		$this->app->singleton('Aimeos\Shop\Base\Page', function($app) {
80
			return new \Aimeos\Shop\Base\Page($app['config'], $app['Aimeos\Shop\Base\Aimeos'], $app['Aimeos\Shop\Base\Context'], $app['Aimeos\Shop\Base\Locale'], $app['Aimeos\Shop\Base\View']);
81
		});
82
83
		$this->app->singleton('Aimeos\Shop\Base\Support', function($app) {
84
			return new \Aimeos\Shop\Base\Support($app['Aimeos\Shop\Base\Context'], $app['Aimeos\Shop\Base\Locale']);
85
		});
86
87
		$this->app->singleton('Aimeos\Shop\Base\View', function($app) {
88
			return new \Aimeos\Shop\Base\View($app['config'], $app['Aimeos\Shop\Base\I18n'], $app['Aimeos\Shop\Base\Support']);
89
		});
90
91
92
		$this->commands( array(
93
			'Aimeos\Shop\Command\AccountCommand',
94
			'Aimeos\Shop\Command\CacheCommand',
95
			'Aimeos\Shop\Command\SetupCommand',
96
			'Aimeos\Shop\Command\JobsCommand',
97
		) );
98
	}
99
100
101
	/**
102
	 * Get the services provided by the provider.
103
	 *
104
	 * @return array
105
	 */
106
	public function provides()
107
	{
108
		return array(
109
			'Aimeos\Shop\Base\Aimeos', 'Aimeos\Shop\Base\I18n', 'Aimeos\Shop\Base\Context',
110
			'Aimeos\Shop\Base\Config', 'Aimeos\Shop\Base\Locale', 'Aimeos\Shop\Base\View',
111
			'Aimeos\Shop\Base\Page', 'Aimeos\Shop\Base\Support',
112
			'Aimeos\Shop\Command\AccountCommand', 'Aimeos\Shop\Command\CacheCommand',
113
			'Aimeos\Shop\Command\SetupCommand', 'Aimeos\Shop\Command\JobsCommand',
114
		);
115
	}
116
117
}