/** * Open database $file with $handler in read only mode. * * @param file Database file to open. * @param handler Handler to use for database access. */ function __construct($file, $handler) { if (!$this->db = dba_open($file, "r", $handler)) { throw new exception("Could not open file " . $file); } }
/** * Close database. */ function __destruct() { dba_close($this->db); }
/** * Rewind to first element. */ function rewind() { $this->key = dba_firstkey($this->db); $this->fetch_data(); }
/** * Move to next element. * * @return void */ function next() { $this->key = dba_nextkey($this->db); $this->fetch_data(); }
/** * Fetches the current data if $key is valid */ private function fetch_data() { if ($this->key !== false) { $this->val = dba_fetch($this->key, $this->db); } }
/** * @return Current data. */ function current() { return $this->val; }
/** * @return Whether more elements are available. */ function valid() { if ($this->db && $this->key !== false) { return true; } else { return false; } }
/** * @return Current key. */ function key() { return $this->key; } } ?>
/** * Open database $file with $handler in read only mode. * * @param file Database file to open. * @param handler Handler to use for database access.取值http://www.php.net/manual/en/dba.requirements.php */ function __construct($file, $handler) { $this->db = dba_popen($file, "c", $handler); if (!$this->db) { throw new exception("Databse could not be opened"); } }
/** * Close database. */ function __destruct() { parent::__destruct(); }
/** * Read an entry. * * @param $name key to read from * @return value associated with $name */ function offsetGet($name) { $data = dba_fetch($name, $this->db); if($data) { if (ini_get("magic_quotes_runtime")) { $data = stripslashes($data); } //return unserialize($data); return $data; } else { return NULL; } }
/** * Set an entry. * * @param $name key to write to * @param $value value to write */ function offsetSet($name, $value) { //dba_replace($name, serialize($value), $this->db); dba_replace($name, $value, $this->db); return $value; }