diff options
Diffstat (limited to 'ext/spl/examples/dbaarray.inc')
-rwxr-xr-x | ext/spl/examples/dbaarray.inc | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/ext/spl/examples/dbaarray.inc b/ext/spl/examples/dbaarray.inc new file mode 100755 index 0000000000..51cd38fadf --- /dev/null +++ b/ext/spl/examples/dbaarray.inc @@ -0,0 +1,89 @@ +<?php + +if (!class_exists("DbaReader")) require_once("dbareader.inc"); + +/** \ingroup Examples + * @brief This implements a DBA Array + * @author Marcus Boerger + * @version 1.0 + */ +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. + */ + 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); + } +} + +?>
\ No newline at end of file |