PHP 8.2.31
Preview: StoreApi.php Size: 3.52 KB
/home/nshryvcy/radiantskinclinics.org/wp-content/plugins/woocommerce/src/StoreApi/StoreApi.php

<?php
namespace Automattic\WooCommerce\StoreApi;

use Automattic\WooCommerce\Blocks\Registry\Container;
use Automattic\WooCommerce\StoreApi\Formatters;
use Automattic\WooCommerce\StoreApi\Authentication;
use Automattic\WooCommerce\StoreApi\Legacy;
use Automattic\WooCommerce\StoreApi\Formatters\CurrencyFormatter;
use Automattic\WooCommerce\StoreApi\Formatters\HtmlFormatter;
use Automattic\WooCommerce\StoreApi\Formatters\MoneyFormatter;
use Automattic\WooCommerce\StoreApi\RoutesController;
use Automattic\WooCommerce\StoreApi\SchemaController;
use Automattic\WooCommerce\StoreApi\Schemas\ExtendSchema;

/**
 * StoreApi Main Class.
 */
final class StoreApi {
	/**
	 * Init and hook in Store API functionality.
	 */
	public function init() {
		/**
		 * Authentication instance.
		 *
		 * @var Authentication $authentication
		 */
		$authentication = self::container()->get( Authentication::class );

		add_filter( 'woocommerce_session_handler', array( $authentication, 'maybe_use_store_api_session_handler' ), 0 );

		add_action(
			'rest_api_init',
			function () {
				if ( ! wc_rest_should_load_namespace( 'wc/store' ) && ! wc_rest_should_load_namespace( 'wc/private' ) ) {
					return;
				}
				self::container()->get( Legacy::class )->init();
				self::container()->get( RoutesController::class )->register_all_routes();
			}
		);
		// Runs on priority 11 after rest_api_default_filters() which is hooked at 10.
		add_action(
			'rest_api_init',
			function () {
				if ( ! wc_rest_should_load_namespace( 'wc/store' ) ) {
					return;
				}
				self::container()->get( Authentication::class )->init();
			},
			11
		);

		add_action(
			'woocommerce_blocks_pre_get_routes_from_namespace',
			function ( $routes, $ns ) {
				if ( 'wc/store/v1' !== $ns ) {
					return $routes;
				}

				$routes = array_merge(
					$routes,
					self::container()->get( RoutesController::class )->get_all_routes( 'v1' )
				);

				return $routes;
			},
			10,
			2
		);
	}

	/**
	 * Loads the DI container for Store API.
	 *
	 * @internal This uses the Blocks DI container. If Store API were to move to core, this container could be replaced
	 * with a different compatible container.
	 *
	 * @param boolean $reset Used to reset the container to a fresh instance. Note: this means all dependencies will be reconstructed.
	 * @return mixed
	 */
	public static function container( $reset = false ) {
		static $container;

		if ( $reset ) {
			$container = null;
		}

		if ( $container ) {
			return $container;
		}

		$container = new Container();
		$container->register(
			Authentication::class,
			function () {
				return new Authentication();
			}
		);
		$container->register(
			Legacy::class,
			function () {
				return new Legacy();
			}
		);
		$container->register(
			RoutesController::class,
			function ( $container ) {
				return new RoutesController(
					$container->get( SchemaController::class )
				);
			}
		);
		$container->register(
			SchemaController::class,
			function ( $container ) {
				return new SchemaController(
					$container->get( ExtendSchema::class )
				);
			}
		);
		$container->register(
			ExtendSchema::class,
			function ( $container ) {
				return new ExtendSchema(
					$container->get( Formatters::class )
				);
			}
		);
		$container->register(
			Formatters::class,
			function () {
				$formatters = new Formatters();
				$formatters->register( 'money', MoneyFormatter::class );
				$formatters->register( 'html', HtmlFormatter::class );
				$formatters->register( 'currency', CurrencyFormatter::class );
				return $formatters;
			}
		);
		return $container;
	}
}

Directory Contents

Dirs: 6 × Files: 9

Name Size Perms Modified Actions
- drwxr-xr-x 2026-05-29 02:43:21
Edit Download
- drwxr-xr-x 2026-05-29 02:43:21
Edit Download
Payments DIR
- drwxr-xr-x 2026-05-29 02:43:21
Edit Download
Routes DIR
- drwxr-xr-x 2026-05-29 02:43:21
Edit Download
Schemas DIR
- drwxr-xr-x 2026-05-29 02:43:21
Edit Download
Utilities DIR
- drwxr-xr-x 2026-05-29 02:43:21
Edit Download
13.86 KB lrw-r--r-- 2026-02-23 17:58:34
Edit Download
7.97 KB lrw-r--r-- 2023-12-27 00:45:02
Edit Download
1.21 KB lrw-r--r-- 2023-12-27 00:45:02
Edit Download
2.70 KB lrw-r--r-- 2023-12-27 00:45:02
Edit Download
3.09 KB lrw-r--r-- 2025-01-21 18:53:44
Edit Download
6.77 KB lrw-r--r-- 2025-11-24 23:10:10
Edit Download
3.34 KB lrw-r--r-- 2025-11-24 23:10:10
Edit Download
4.81 KB lrw-r--r-- 2026-03-30 17:12:24
Edit Download
3.52 KB lrw-r--r-- 2026-02-23 17:58:34
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).