array = $array; } elseif ( is_object( $array ) ) { $this->array = get_object_vars( $array ); } else { throw new InvalidArgumentException( __METHOD__ . ' requires an array or object' ); } $this->rewind(); } #[\ReturnTypeWillChange] public function current() { return current( $this->array ); } #[\ReturnTypeWillChange] public function key() { return key( $this->array ); } public function next(): void { prev( $this->array ); } public function rewind(): void { end( $this->array ); } public function valid(): bool { return key( $this->array ) !== null; } public function count(): int { return count( $this->array ); } }