File "class-singleton.php"

Full Path: /home/rattkxnv/byattorney.com/wp-content/plugins/generateblocks/includes/utils/class-singleton.php
File size: 1.03 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * The singleton class file.
 *
 * @package GenerateBlocks\Utils
 */

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

/**
 * The GenerateBlocks Singleton class.
 *
 * @since 1.9.0
 */
class GenerateBlocks_Singleton {

	/**
	 * Child class instances.
	 *
	 * @var array<static>
	 */
	private static $instances = [];

	/**
	 * The singleton constructor can not be public.
	 */
	final protected function __construct() {
	}

	/**
	 * Not allowed to clone a singleton.
	 */
	protected function __clone() {
	}

	/**
	 * Not allowed to un-serialize a singleton.
	 *
	 * @throws Exception Cannot un-serialize a singleton.
	 */
	public function __wakeup() {
		throw new Exception( 'Cannot un-serialize singleton' );
	}

	/**
	 * Get the class instance.
	 *
	 * @return static
	 */
	public static function get_instance(): GenerateBlocks_Singleton {
		$subclass = static::class;

		if ( ! isset( self::$instances[ $subclass ] ) ) {
			self::$instances[ $subclass ] = new static();
		}

		return self::$instances[ $subclass ];
	}
}