Annotation of embedaddon/php/ext/spl/examples/dbareader.inc, revision 1.1
1.1 ! misho 1: <?php
! 2:
! 3: /** @file dbareader.inc
! 4: * @ingroup Examples
! 5: * @brief class DbaReader
! 6: * @author Marcus Boerger
! 7: * @date 2003 - 2005
! 8: *
! 9: * SPL - Standard PHP Library
! 10: */
! 11:
! 12: /** @ingroup Examples
! 13: * @brief This implements a DBA Iterator.
! 14: * @author Marcus Boerger
! 15: * @version 1.0
! 16: */
! 17: class DbaReader implements Iterator
! 18: {
! 19:
! 20: protected $db = NULL;
! 21: private $key = false;
! 22: private $val = false;
! 23:
! 24: /**
! 25: * Open database $file with $handler in read only mode.
! 26: *
! 27: * @param file Database file to open.
! 28: * @param handler Handler to use for database access.
! 29: */
! 30: function __construct($file, $handler) {
! 31: if (!$this->db = dba_open($file, 'r', $handler)) {
! 32: throw new exception('Could not open file ' . $file);
! 33: }
! 34: }
! 35:
! 36: /**
! 37: * Close database.
! 38: */
! 39: function __destruct() {
! 40: dba_close($this->db);
! 41: }
! 42:
! 43: /**
! 44: * Rewind to first element.
! 45: */
! 46: function rewind() {
! 47: $this->key = dba_firstkey($this->db);
! 48: $this->fetch_data();
! 49: }
! 50:
! 51: /**
! 52: * Move to next element.
! 53: *
! 54: * @return void
! 55: */
! 56: function next() {
! 57: $this->key = dba_nextkey($this->db);
! 58: $this->fetch_data();
! 59: }
! 60:
! 61: /**
! 62: * Fetches the current data if $key is valid
! 63: */
! 64: private function fetch_data() {
! 65: if ($this->key !== false) {
! 66: $this->val = dba_fetch($this->key, $this->db);
! 67: }
! 68: }
! 69:
! 70: /**
! 71: * @return Current data.
! 72: */
! 73: function current() {
! 74: return $this->val;
! 75: }
! 76:
! 77: /**
! 78: * @return Whether more elements are available.
! 79: */
! 80: function valid() {
! 81: if ($this->db && $this->key !== false) {
! 82: return true;
! 83: } else {
! 84: return false;
! 85: }
! 86: }
! 87:
! 88: /**
! 89: * @return Current key.
! 90: */
! 91: function key() {
! 92: return $this->key;
! 93: }
! 94: }
! 95:
! 96: ?>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>