db = $db; if ( $result instanceof ResultWrapper ) { $this->result = $result->result; } else { $this->result = $result; } } public function numRows() { return $this->getDB()->numRows( $this ); } public function fetchObject() { return $this->getDB()->fetchObject( $this ); } public function fetchRow() { return $this->getDB()->fetchRow( $this ); } public function seek( $row ) { $this->getDB()->dataSeek( $this, $row ); } public function free() { if ( $this->db ) { $this->db->freeResult( $this ); $this->db = null; } $this->result = null; } /** * @return IDatabase * @throws RuntimeException */ private function getDB() { if ( !$this->db ) { throw new RuntimeException( static::class . ' needs a DB handle for iteration.' ); } return $this->db; } function rewind() { if ( $this->numRows() ) { $this->getDB()->dataSeek( $this, 0 ); } $this->pos = 0; $this->currentRow = null; } function current() { if ( is_null( $this->currentRow ) ) { $this->next(); } return $this->currentRow; } function key() { return $this->pos; } function next() { $this->pos++; $this->currentRow = $this->fetchObject(); return $this->currentRow; } function valid() { return $this->current() !== false; } } class_alias( ResultWrapper::class, 'ResultWrapper' );