%PDF- %PDF-
Direktori : /home2/vacivi36/vittashop.com.br/wp-content/plugins/woocommerce/src/ |
Current File : //home2/vacivi36/vittashop.com.br/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. * * @param string $id Class name. * * @return 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 ); } }