* @package generis */ class core_kernel_uri_AdvKeyValueUriProvider extends ConfigurableService implements UriProvider { const OPTION_PERSISTENCE = 'persistence'; const OPTION_NAMESPACE = 'namespace'; const PERSISTENCE_KEY = 'generis_uriProvider'; /** * @return common_persistence_AdvKeyValuePersistence */ public function getPersistence() { return common_persistence_AdvKeyValuePersistence::getPersistence($this->getOption(self::OPTION_PERSISTENCE)); } /** * Generates a URI based on a serial stored in the database. * * @access public * @author Jerome Bogaerts, * @return string * @throws UriProviderException */ public function provide() { $nextId = $this->getPersistence()->incr(self::PERSISTENCE_KEY); list($usec, $sec) = explode(" ", microtime()); $uri = $this->getOption(self::OPTION_NAMESPACE) . 'i' . (str_replace(".", "", $sec . "" . $usec)) . $nextId; return $uri; } }