$value) { header("{$key}: {$value}"); } echo json_encode($data); exit(); } /** * Redirige a una URL específica. * * @param string $url * @param int $statusCode * @return RedirectResponse */ public static function redirect( string $url, int $statusCode = 302 ): RedirectResponse { return new RedirectResponse($url, $statusCode); } /** * Extrae un parámetro de la solicitud (GET, POST, etc.) con saneamiento. * Si es una solicitud JSON, extrae los datos del cuerpo JSON. * * @param Request $request * @param string $key * @param mixed $default * @param int|null $filter * @return mixed */ public static function getParam( Request $request, string $key, $default = null, int $filter = null ) { $contentType = $request->headers->get("Content-Type", ""); if (strpos($contentType, "application/json") === 0) { $data = json_decode($request->getContent(), true); $value = $data[$key] ?? $default; } else { $value = $request->get($key, $default); } if ($filter !== null) { return filter_var($value, $filter); } return $value; } /** * Obtiene la IP del cliente de manera segura. * * @param Request $request * @return string|null */ public static function getClientIp(Request $request): ?string { return $request->getClientIp(); } }