/var/www/html_us/wp-content/plugins/woocommerce/src/Blocks/Package.php


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
<?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 WooCommerce 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()->getNewPackage::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()->getBootstrap::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
     * @deprecated since 9.6, use wp_get_environment_type() instead.
     */
    
public static function feature() {
        
wc_deprecated_function'Package::feature''9.6''wp_get_environment_type' );
        return new 
FeatureGating();
    }

    
/**
     * 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 '11.8.0-dev';
                    return new 
NewPackage(
                        
$version,
                        
dirname__DIR__)
                    );
                }
            );
            
// register Bootstrap.
            
$container->register(
                
Bootstrap::class,
                function ( 
$container ) {
                    return new 
Bootstrap(
                        
$container
                    
);
                }
            );
            
// register Bootstrap.
            
$container->register(
                
Migration::class,
                function () {
                    return new 
Migration();
                }
            );
        }
        return 
$container;
    }
}