Menu
Coddy logo textTech

Resumen: Validación de entradas

Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 58 de 68.

challenge icon

Desafío

Fácil

Recibirás cuatro entradas: una cadena de dirección de correo electrónico, una cadena de número de teléfono, un número de edad mínima y un número de edad real.

Crea dos clases de excepción personalizadas:

  • InvalidEmailException que extienda la clase base Exception
  • InvalidAgeException que extienda la clase base Exception

Crea una función llamada validateUserData que acepte cuatro parámetros: email, phone, minimum age y actual age. Dentro de esta función:

  • Verifica si el email contiene el símbolo @. Si no lo contiene, lanza una InvalidEmailException con el mensaje "Email must contain @ symbol"
  • Verifica si la longitud del número de teléfono es exactamente de 10 caracteres. Si no lo es, lanza una Exception genérica con el mensaje "Phone number must be 10 digits"
  • Verifica si la edad real es menor que la edad mínima. Si lo es, lanza una InvalidAgeException con el mensaje "User must be at least X years old" (donde X es el valor de la edad mínima)
  • Si todas las validaciones pasan, imprime "User data is valid"

Usa un bloque try...catch...finally para llamar a la función con las entradas proporcionadas. Crea dos bloques catch separados:

  • El primer bloque catch debe capturar InvalidEmailException e imprimir "Email error: " seguido del mensaje de la excepción
  • El segundo bloque catch debe capturar InvalidAgeException e imprimir "Age error: " seguido del mensaje de la excepción
  • Añade un tercer bloque catch que capture cualquier otra Exception e imprima "Validation error: " seguido del mensaje de la excepción

En el bloque finally, imprime "Validation process completed".

Formato de entrada:

  • Primera línea: Una cadena que representa la dirección de correo electrónico (ejemplo: user@example.com o invalidemail.com)
  • Segunda línea: Una cadena que representa el número de teléfono (ejemplo: 1234567890 o 12345)
  • Tercera línea: Un entero que representa el requisito de edad mínima (ejemplo: 18)
  • Cuarta línea: Un entero que representa la edad real (ejemplo: 25 o 16)

Salida esperada:

  • Si todos los datos son válidos: User data is valid seguido de Validation process completed en una nueva línea
  • Si el email no es válido: Email error: Email must contain @ symbol seguido de Validation process completed en una nueva línea
  • Si el número de teléfono no es válido: Validation error: Phone number must be 10 digits seguido de Validation process completed en una nueva línea
  • Si la edad es inferior al mínimo: Age error: User must be at least X years old (donde X es la edad mínima) seguido de Validation process completed en una nueva línea

Pruébalo tú mismo

<?php
// Leer entradas
$email = trim(fgets(STDIN));
$phone = trim(fgets(STDIN));
$minAge = intval(fgets(STDIN));
$actualAge = intval(fgets(STDIN));

// TODO: Crear clases de excepción personalizadas aquí
// Crear la clase InvalidEmailException
// Crear la clase InvalidAgeException

// TODO: Crear la función validateUserData aquí
// La función debe aceptar cuatro parámetros: email, phone, minAge, actualAge
// Implementar la lógica de validación dentro de la función

// TODO: Usar el bloque try...catch...finally para llamar a la función
// Llamar a validateUserData con los valores de entrada
// Añadir bloques catch para InvalidEmailException, InvalidAgeException y Exception genérica
// Añadir el bloque finally

?>

Todas las lecciones de Lógica y Flujo