Annotation of embedaddon/php/ext/spl/examples/dbareader.inc, revision 1.1.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>