<div class="codebody" id="code14333"> <?PHP class DbaReader implements Iterator { protected $db = NULL; private $key = false; private $val = false; / 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; } } ?>
<div class="codebody" id="code6047"> <?PHP class DbaArray extends DbaReader implements ArrayAccess { /* 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; } / @return whether key $name exists. / function offsetExists($name) { return dba_exists($name,$this->db); } /* Delete a key/value pair. @param $name key to delete. */ function offsetUnset($name) { return dba_delete($name,$this->db); } } ?>