/**
  * Main Easy_Digital_Downloads Instance
  *
  * Insures that only one instance of Easy_Digital_Downloads exists in memory at any one
  * time. Also prevents needing to define globals all over the place.
  *
  * @since v1.4
  * @staticvar array $instance
  * @uses Easy_Digital_Downloads::setup_globals() Setup the globals needed
  * @uses Easy_Digital_Downloads::includes() Include the required files
  * @uses Easy_Digital_Downloads::setup_actions() Setup the hooks and actions
  * @see EDD()
  * @return The one true Easy_Digital_Downloads
  */
 public static function instance()
 {
     if (!isset(self::$instance)) {
         self::$instance = new Easy_Digital_Downloads();
         self::$instance->setup_constants();
         self::$instance->includes();
         self::$instance->load_textdomain();
     }
     return self::$instance;
 }
 /**
  * Main Easy_Digital_Downloads Instance.
  *
  * Insures that only one instance of Easy_Digital_Downloads exists in memory at any one
  * time. Also prevents needing to define globals all over the place.
  *
  * @since 1.4
  * @static
  * @staticvar array $instance
  * @uses Easy_Digital_Downloads::setup_constants() Setup the constants needed.
  * @uses Easy_Digital_Downloads::includes() Include the required files.
  * @uses Easy_Digital_Downloads::load_textdomain() load the language files.
  * @see EDD()
  * @return object|Easy_Digital_Downloads The one true Easy_Digital_Downloads
  */
 public static function instance()
 {
     if (!isset(self::$instance) && !self::$instance instanceof Easy_Digital_Downloads) {
         self::$instance = new Easy_Digital_Downloads();
         self::$instance->setup_constants();
         add_action('plugins_loaded', array(self::$instance, 'load_textdomain'));
         self::$instance->includes();
         self::$instance->roles = new EDD_Roles();
         self::$instance->fees = new EDD_Fees();
         self::$instance->api = new EDD_API();
         self::$instance->session = new EDD_Session();
         self::$instance->html = new EDD_HTML_Elements();
         self::$instance->emails = new EDD_Emails();
         self::$instance->email_tags = new EDD_Email_Template_Tags();
         self::$instance->customers = new EDD_DB_Customers();
         self::$instance->customer_meta = new EDD_DB_Customer_Meta();
         self::$instance->payment_stats = new EDD_Payment_Stats();
     }
     return self::$instance;
 }
 /**
  * Main Easy_Digital_Downloads Instance
  *
  * Insures that only one instance of Easy_Digital_Downloads exists in memory at any one
  * time. Also prevents needing to define globals all over the place.
  *
  * @since 1.4
  * @static
  * @staticvar array $instance
  * @uses Easy_Digital_Downloads::setup_globals() Setup the globals needed
  * @uses Easy_Digital_Downloads::includes() Include the required files
  * @uses Easy_Digital_Downloads::setup_actions() Setup the hooks and actions
  * @see EDD()
  * @return The one true Easy_Digital_Downloads
  */
 public static function instance()
 {
     if (!isset(self::$instance) && !self::$instance instanceof Easy_Digital_Downloads) {
         self::$instance = new Easy_Digital_Downloads();
         self::$instance->setup_constants();
         self::$instance->includes();
         self::$instance->load_textdomain();
         self::$instance->roles = new EDD_Roles();
         self::$instance->fees = new EDD_Fees();
         self::$instance->api = new EDD_API();
         self::$instance->session = new EDD_Session();
         self::$instance->html = new EDD_HTML_Elements();
     }
     return self::$instance;
 }