<?php
/**
 *
 * Load the API components.
 *
 * @since 1.0.0
 *
 * @package SplendorStudio\Framework\API
*/
abstract class Fancify_Lite_Model {

	use Template_Trait;

	/**
	 * instance variable
	 *
	 * @since    1.0.0
	 */
	private static $instances = array();

	/**
	 * Provides access to a single instance of a module using the singleton pattern
	 *
	 * @since    1.0.0
	 */
	public static function get_instance() {
		$classname = get_called_class();

		if ( ! isset( self::$instances[ $classname ] ) ) {
			self::$instances[ $classname ] = new $classname();
		}
		
		return self::$instances[ $classname ];
	}
	
	/**
	 * Constructor
	 *
	 * @since    1.0.0
	 */
	abstract protected function __construct();

	/**
	 * Register callbacks for actions and filters
	 *
	 * @since    1.0.0
	 */
	abstract protected function register_hook_callbacks();

}
