130 lines
3.0 KiB
PHP
130 lines
3.0 KiB
PHP
<?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 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 an 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 = '6.1.0';
|
|
return new NewPackage(
|
|
$version,
|
|
dirname( __DIR__ ),
|
|
new FeatureGating()
|
|
);
|
|
}
|
|
);
|
|
// register Bootstrap.
|
|
$container->register(
|
|
Bootstrap::class,
|
|
function ( $container ) {
|
|
return new Bootstrap(
|
|
$container
|
|
);
|
|
}
|
|
);
|
|
}
|
|
return $container;
|
|
}
|
|
}
|