File "class-container.php"

Full path: /home/dora/public_html/wp-content/plugins/wp-grid-builder-bricks/includes/class-container.php
File size: 1.78 KB
MIME-type: --
Charset: utf-8

<?php
/**
 * Container
 *
 * @package   WP Grid Builder - Bricks
 * @author    Loïc Blascos
 * @copyright 2019-2022 Loïc Blascos
 */

namespace WP_Grid_Builder_Bricks\Includes;

// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Container
 *
 * @class WP_Grid_Builder_Bricks\Includes\Container
 * @since 1.0.0
 */
final class Container {

	/**
	 * Holds container instances
	 *
	 * @since 1.0.0
	 * @access private
	 * @var array
	 */
	private static $instances = [];

	/**
	 * Add container instance
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param string   $id       Instance id.
	 * @param Instance $instance Instance.
	 * @return false|Instance
	 */
	public static function add( $id, $instance ) {

		if ( self::has( $id ) ) {
			return self::get( $id );
		}

		self::$instances[ $id ] = $instance;
		return $instance;

	}

	/**
	 * Get container instance
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param string $id Instance id.
	 * @return false|Instance
	 */
	public static function get( $id ) {

		if ( ! self::has( $id ) ) {
			return false;
		}

		return self::$instances[ $id ];

	}

	/**
	 * Get all container instances
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @return array
	 */
	public static function all() {

		return self::$instances;

	}

	/**
	 * Delete container instance
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param string $id Instance id.
	 * @return boolean
	 */
	public static function delete( $id ) {

		if ( ! self::has( $id ) ) {
			return false;
		}

		unset( self::$instances[ $id ] );
		return true;

	}

	/**
	 * Whether it has container instance
	 *
	 * @since 1.0.0
	 * @access public
	 *
	 * @param string $id Instance id.
	 * @return boolean
	 */
	public static function has( $id ) {

		return isset( self::$instances[ $id ] );

	}
}