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.
Desafío
FácilRecibirá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:
InvalidEmailExceptionque extienda la clase baseExceptionInvalidAgeExceptionque extienda la clase baseException
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 unaInvalidEmailExceptioncon 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
Exceptiongené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
InvalidAgeExceptioncon 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
catchdebe capturarInvalidEmailExceptione imprimir"Email error: "seguido del mensaje de la excepción - El segundo bloque
catchdebe capturarInvalidAgeExceptione imprimir"Age error: "seguido del mensaje de la excepción - Añade un tercer bloque
catchque capture cualquier otraExceptione 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.comoinvalidemail.com) - Segunda línea: Una cadena que representa el número de teléfono (ejemplo:
1234567890o12345) - 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:
25o16)
Salida esperada:
- Si todos los datos son válidos:
User data is validseguido deValidation process completeden una nueva línea - Si el email no es válido:
Email error: Email must contain @ symbolseguido deValidation process completeden una nueva línea - Si el número de teléfono no es válido:
Validation error: Phone number must be 10 digitsseguido deValidation process completeden 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 deValidation process completeden 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
1Funciones avanzadas
Funciones anónimasClosures y 'use'Funciones de flechaFunciones callbackUso de 'call_user_func'Funciones variablesPaso por referenciaFunciones recursivasResumen: Miscelánea de funciones4Arreglos multidimensionales
Crear un arreglo 2DAcceder a elementos de un arreglo 2DModificar elementos de un arreglo 2DIterar con bucles anidadosArreglos asociativos 2DResumen: Ejercicio de cuadrícula simple2Manipulación avanzada de arrays
Agregar con 'array_push'Eliminar con 'array_pop'Agregar con 'array_unshift'Eliminar con 'array_shift'Fusionar arrays indexadosFusionar arrays asociativosExtraer con 'array_slice'Valores con 'in_array'Claves con 'array_search'Resumen: Ejercicio de Playlist5Registro de Calificaciones
Configuración del Proyecto: Estructura de DatosAgregar un Nuevo EstudianteAgregar una Calificación a un EstudianteCalcular el Promedio del EstudianteEncontrar al Mejor EstudianteGenerar un Reporte de Calificaciones8Manejo de errores y excepciones
Entendiendo los errores de PHPEl bloque 'try...catch'El bloque 'finally'Lanzar una excepciónCrear una excepción personalizadaUsar una excepción personalizadaResumen: Validación de entradas3Ordenar Arrays
Ordenar arrays indexados de forma ascendenteOrdenar arrays indexados de forma descendenteOrdenar arrays asociativos por valorOrdenar arrays asociativos por claveOrdenación por orden naturalOrdenación personalizada con 'usort'Resumen: Ordenar tablas de clasificación