SPL is a standard extension by Marcus Börger that allows you to register a set of standard engine level interfaces.

Database Mapping
<?php
class dba_reader 
    
implements spl_iterator {
    public 
$db NULL;

    function 
__construct($file$handler
    {
        
$this->db dba_open(
            
$file
            
'r'
            
$handler
        
);
    }
    
    function 
new_iterator() {
        return new 
dba_iter($this);
    }
}

class 
dba_iter 
    
implements spl_sequence_assoc 
{
    private 
$obj;
    private 
$key NULL;
    private 
$val NULL;

    function 
__construct($obj) {
        
$this->obj $obj;
    }

    function 
reset() {
        if (!
$this->obj->db) {
            return;
        }
        
$this->key 
            
dba_firstkey($this->obj->db);
    }

    function 
elem() {
        return 
$this->val;
    }

    function 
next() {
        
$this->key 
            
dba_nextkey($this->obj->db);
    }

    function 
more() {
        if (
$this->obj->db && 
            
$this->key !== false) {
            
$this->val dba_fetch(
                
$this->key
                
$this->obj->db
            
);
            return 
true;
        } else {
            return 
false;
        }
    }

    function 
key() {
        return 
$this->key;
    }
}

$db = new dba_reader($argv[1], $argv[2]);
foreach(
$db as $key => $val) {
    echo 
"'$key' => '$val'\n";
}

?>