Skip to content
Snippets Groups Projects
class-singleton.php 789 B
Newer Older
Erick Hitter's avatar
Erick Hitter committed
/**
 * Abstract singleton for plugin's main classes
 *
 * @package Bulk_Edit_Cron_Offload
 */

namespace Automattic\WP\Bulk_Edit_Cron_Offload;

Erick Hitter's avatar
Erick Hitter committed
/**
 * Class Singleton
 */
abstract class Singleton {
	/**
	 * Class instance
Erick Hitter's avatar
Erick Hitter committed
	 *
	 * @var array
	 */
	private static $__instances = array();

Erick Hitter's avatar
Erick Hitter committed
	/**
	 * Instantiate the class
	 *
	 * @return self
	 */
	public static function instance() {
		$caller = get_called_class();

		if ( ! isset( self::$__instances[ $caller ] ) ) {
			self::$__instances[ $caller ] = new $caller();

			self::$__instances[ $caller ]->class_init();
		}

		return self::$__instances[ $caller ];
	}

Erick Hitter's avatar
Erick Hitter committed
	/**
	 * Singleton constructor
	 */
	protected function __construct() {}

	/**
	 * PLUGIN SETUP
	 */

	/**
	 * Register hooks
	 */
	protected function class_init() {}
}