Server IP : 192.250.235.76 / Your IP : 45.90.210.12
System : Linux s2968.sgp1.stableserver.net 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64
PHP Version : 8.2.29
Disable Function : NONE
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Server IP : 198.54.116.172 / Your IP : 216.73.216.36
System : Linux server322.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
PHP Version : 7.4.33
Disable Function : mail
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Current File : /home/sadasgfe/fashiondebate.pk/wp-content/plugins/woocommerce/src//Container.php
<?php
/**
* Container class file.
*/
declare( strict_types=1 );
namespace Automattic\WooCommerce;
use Automattic\WooCommerce\Internal\DependencyManagement\ContainerException;
use Automattic\WooCommerce\Internal\DependencyManagement\RuntimeContainer;
/**
* PSR11 compliant dependency injection container for WooCommerce.
*
* Classes in the `src` directory should specify dependencies from that directory via an 'init' method having arguments
* with type hints. If an instance of the container itself is needed, the type hint to use is \Psr\Container\ContainerInterface.
*
* Classes in the `src` directory should interact with anything outside (especially code in the `includes` directory
* and WordPress functions) by using the classes in the `Proxies` directory. The exception is idempotent
* functions (e.g. `wp_parse_url`), those can be used directly.
*
* Classes in the `includes` directory should use the `wc_get_container` function to get the instance of the container when
* they need to get an instance of a class from the `src` directory.
*
* Internally, an instance of RuntimeContainer will be used for the actual class resolution. This class uses reflection
* to instantiate classes and figure out dependencies, so there's no need for explicit class registration.
* When running the unit tests suite this will be replaced with an instance of TestingContainer,
* which provides additional functionality.
*/
final class Container {
/**
* The underlying container.
*
* @var RuntimeContainer
*/
private $container;
/**
* Class constructor.
*/
public function __construct() {
// When the League container was in use we allowed to retrieve the container itself
// by using 'Psr\Container\ContainerInterface' as the class identifier,
// we continue allowing that for compatibility.
$this->container = new RuntimeContainer(
array(
__CLASS__ => $this,
'Psr\Container\ContainerInterface' => $this,
)
);
}
/**
* Returns an instance of the specified class.
* See the comment about ContainerException in RuntimeContainer::get.
*
* @template T
* @param string|class-string<T> $id Class name.
*
* @return T|object Object instance.
*
* @throws ContainerException Error when resolving the class to an object instance, or class not found.
* @throws \Exception Exception thrown in the constructor or in the 'init' method of one of the resolved classes.
*/
public function get( string $id ) {
return $this->container->get( $id );
}
/**
* Returns true if the container can return an instance of the given class or false otherwise.
* See the comment in RuntimeContainer::has.
*
* @param class-string $id Class name.
*
* @return bool
*/
public function has( string $id ): bool {
return $this->container->has( $id );
}
}