results = $resultset; $this->num_fields = is_array(current($resultset)) ? count(current($resultset)) : count($resultset); $this->num_rows = count($this->results); $this->length = $this->num_rows; $this->cursor_index = 0; } public function get_num_rows() { return $this->num_rows; } public function is_error() { return ($this->error ? true : false); } public function get_error() { return $this->error; } public function get_row() { return $this->current(); } public function to_array() { return $this->results; } // Implementing Countable public function count(): int { return $this->get_num_rows(); } // Implementing ArrayAccess public function offsetExists(mixed $offset): bool { return !$this->error && $offset < $this->length && $offset >= 0; } public function offsetGet(mixed $offset): mixed { return $this->offsetExists($offset) ? $this->results[$offset] : false; } public function offsetSet(mixed $offset, mixed $value): void { if($this->offsetExists($offset)) { $this->results[$offset] = $value; } } public function offsetUnset(mixed $offset): void { throw new \RuntimeException("Unsetting elements is not supported."); } // Implementing Iterator public function current(): mixed { return $this->offsetGet($this->cursor_index); } public function key(): mixed { return $this->cursor_index; } public function next(): void { ++$this->cursor_index; } public function rewind(): void { $this->cursor_index = 0; } public function valid(): bool { return $this->offsetExists($this->cursor_index); } }