laipower/wp-content/plugins/gp-premium/inc/class-singleton.php

59 lines
1.1 KiB
PHP

<?php
/**
* GenerateBlocks Pro singleton class.
*
* @package Generateblocks
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
/**
* The Singleton class.
*/
abstract class GeneratePress_Pro_Singleton {
/**
* Instance.
*
* @access private
* @var array Instances
*/
private static $instances = array();
/**
* The Singleton's constructor should always be private to prevent direct
* construction calls with the `new` operator.
*/
protected function __construct() { }
/**
* Singletons should not be cloneable.
*/
protected function __clone() { }
/**
* Singletons should not be restorable from strings.
*
* @throws Exception Cannot unserialize a singleton.
*/
public function __wakeup() {
throw new Exception( 'Cannot unserialize a singleton.' );
}
/**
* Initiator.
*
* @return object initialized object of class.
*/
public static function get_instance() {
$cls = static::class;
if ( ! isset( self::$instances[ $cls ] ) ) {
self::$instances[ $cls ] = new static();
}
return self::$instances[ $cls ];
}
}