Package.php
3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<?php
namespace Automattic\WooCommerce\Blocks;
use Automattic\WooCommerce\Blocks\Domain\Package as NewPackage;
use Automattic\WooCommerce\Blocks\Domain\Bootstrap;
use Automattic\WooCommerce\Blocks\Registry\Container;
use Automattic\WooCommerce\Blocks\Domain\Services\FeatureGating;
/**
* Main package class.
*
* Returns information about the package and handles init.
*
* In the context of this plugin, it handles init and is called from the main
* plugin file (woocommerce-gutenberg-products-block.php).
*
* In the context of WooCommere core, it handles init and is called from
* WooCommerce's package loader. The main plugin file is _not_ loaded.
*
* @since 2.5.0
*/
class Package {
/**
* For back compat this is provided. Ideally, you should register your
* class with Automattic\Woocommerce\Blocks\Container and make Package a
* dependency.
*
* @since 2.5.0
* @return Package The Package instance class
*/
protected static function get_package() {
return self::container()->get( NewPackage::class );
}
/**
* Init the package - load the blocks library and define constants.
*
* @since 2.5.0 Handled by new NewPackage.
*/
public static function init() {
self::container()->get( Bootstrap::class );
}
/**
* Return the version of the package.
*
* @return string
*/
public static function get_version() {
return self::get_package()->get_version();
}
/**
* Return the path to the package.
*
* @return string
*/
public static function get_path() {
return self::get_package()->get_path();
}
/**
* Returns an instance of the FeatureGating class.
*
* @return FeatureGating
*/
public static function feature() {
return self::get_package()->feature();
}
/**
* Checks if we're executing the code in an experimental build mode.
*
* @return boolean
*/
public static function is_experimental_build() {
return self::get_package()->is_experimental_build();
}
/**
* Checks if we're executing the code in a feature plugin or experimental build mode.
*
* @return boolean
*/
public static function is_feature_plugin_build() {
return self::get_package()->is_feature_plugin_build();
}
/**
* Loads the dependency injection container for woocommerce blocks.
*
* @param boolean $reset Used to reset the container to a fresh instance.
* Note: this means all dependencies will be
* reconstructed.
*/
public static function container( $reset = false ) {
static $container;
if (
! $container instanceof Container
|| $reset
) {
$container = new Container();
// register Package.
$container->register(
NewPackage::class,
function ( $container ) {
// leave for automated version bumping.
$version = '9.1.5';
return new NewPackage(
$version,
dirname( __DIR__ ),
new FeatureGating()
);
}
);
// register Bootstrap.
$container->register(
Bootstrap::class,
function ( $container ) {
return new Bootstrap(
$container
);
}
);
// register Bootstrap.
$container->register(
Migration::class,
function () {
return new Migration();
}
);
}
return $container;
}
}