/** * Retrieves an instanse to the configurated XOAD Events storage provider. * * <p>Example:</p> * <code> * <?php * * require_once('xoad.php'); * * $storage =& XOAD_Events_Storage::getStorage(); * * $storage->postEvent('event', 'class'); * * ?> * </code> * * @access public * * @return object Singleton {@link XOAD_Events_Storage} inherited class based * on the configuration (see {@link XOAD_EVENTS_STORAGE_DSN}). * * @static * */ public static function &getStorage() { if (!isset(self::$instance)) { $className = null; $classParameters = null; $separator = '://'; $position = strpos(XOAD_EVENTS_STORAGE_DSN, $separator); if ($position === false) { $className = XOAD_EVENTS_STORAGE_DSN; } else { $className = substr(XOAD_EVENTS_STORAGE_DSN, 0, $position); $classParameters = substr(XOAD_EVENTS_STORAGE_DSN, $position + strlen($separator)); } if (empty($className)) { return null; } $fileName = XOAD_BASE . '/classes/events/storage/' . $className . '.class.php'; /** * Load the file that defines the events storage provider. */ require_once $fileName; $realClassName = 'XOAD_Events_Storage_' . $className; if (!class_exists($realClassName)) { return null; } self::$instance = new $realClassName($classParameters); } return self::$instance; }