59 lines
1.1 KiB
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 ];
|
|
}
|
|
}
|