count = count($this->rows); } public function closeCursor(): bool { // noop return true; } public function fetch(int $fetchMode = PDO::FETCH_ASSOC) { $row = array_shift($this->rows); if (!$row) { return false; } return match ($fetchMode) { PDO::FETCH_ASSOC => $row, PDO::FETCH_NUM => array_values($row), PDO::FETCH_COLUMN => current($row), default => throw new \InvalidArgumentException('Fetch mode not supported for array result'), }; } public function fetchAll(int $fetchMode = PDO::FETCH_ASSOC): array { return match ($fetchMode) { PDO::FETCH_ASSOC => $this->rows, PDO::FETCH_NUM => array_map(function ($row) { return array_values($row); }, $this->rows), PDO::FETCH_COLUMN => array_map(function ($row) { return current($row); }, $this->rows), default => throw new \InvalidArgumentException('Fetch mode not supported for array result'), }; } public function fetchColumn() { return $this->fetchOne(); } public function fetchOne() { $row = $this->fetch(); if ($row) { return current($row); } else { return false; } } public function rowCount(): int { return $this->count; } }