$data */ public static function fromArray(array $data): self { return new self( status: self::asString($data['status'] ?? ''), dne: self::asString($data['dne'] ?? ''), ceps: self::asInt($data['ceps'] ?? 0), geo: self::asInt($data['geo'] ?? 0), base_gerada_em: self::asString($data['base_gerada_em'] ?? ''), ); } /** * `true` when the API reports itself healthy. */ public function isOk(): bool { return $this->status === 'ok'; } /** * @return array */ public function toArray(): array { return [ 'status' => $this->status, 'dne' => $this->dne, 'ceps' => $this->ceps, 'geo' => $this->geo, 'base_gerada_em' => $this->base_gerada_em, ]; } private static function asString(mixed $value): string { return is_scalar($value) ? (string) $value : ''; } private static function asInt(mixed $value): int { return is_numeric($value) ? (int) (float) $value : 0; } }