code: public function next()
    {
      // there is no next when recordSet isn't initialised yet, or when there are
      // no more records
      if (is_null($this->recordSet) || $this->recordSet->EOF)
      {
        // there is no recordSet yet, or there is no data
        $this->current_row_nr = 0;
        $this->current_table_obj = null;
        // if recordSet is initialised, close it
        if (!is_null($this->recordSet))
        {
          $this->recordSet->Close();
        }
      }
      else
      {
        // keep track of row nr, for key method
        $this->current_row_nr++;
        // fill current object with data from current row
        $this->current_table_obj = clone $this->search_obj;
        $this->current_table_obj->loadFromDBArray($this->recordSet->FetchRow());
        // remember that we used the recordSet now, so when rewind() is called again the query has to be executed again
        $this->recordSet_used = true;
      }
      // normally next returns nothing, but sometimes its easy to have the current object
      return $this->current_table_obj;
    }
docs: equal to next() on an array
  
  Iterator implementation
  
  @return mixed