Récapitulatif : Validation des entrées
Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 58 sur 68.
Défi
FacileVous recevrez quatre entrées : une chaîne d'adresse e-mail, une chaîne de numéro de téléphone, un nombre pour l'âge minimum et un nombre pour l'âge réel.
Créez deux classes d'exception personnalisées :
InvalidEmailExceptionqui étend la classe de baseExceptionInvalidAgeExceptionqui étend la classe de baseException
Créez une fonction appelée validateUserData qui accepte quatre paramètres : email, phone, minimum age, et actual age. À l'intérieur de cette fonction :
- Vérifiez si l'e-mail contient le symbole
@. Si ce n'est pas le cas, lancez uneInvalidEmailExceptionavec le message"Email must contain @ symbol" - Vérifiez si la longueur du numéro de téléphone est exactement de 10 caractères. Si ce n'est pas le cas, lancez une
Exceptiongénérique avec le message"Phone number must be 10 digits" - Vérifiez si l'âge réel est inférieur à l'âge minimum. Si c'est le cas, lancez une
InvalidAgeExceptionavec le message"User must be at least X years old"(où X est la valeur de l'âge minimum) - Si toutes les validations réussissent, affichez
"User data is valid"
Utilisez un bloc try...catch...finally pour appeler la fonction avec les entrées fournies. Créez deux blocs catch distincts :
- Le premier bloc
catchdoit intercepterInvalidEmailExceptionet afficher"Email error: "suivi du message de l'exception - Le deuxième bloc
catchdoit intercepterInvalidAgeExceptionet afficher"Age error: "suivi du message de l'exception - Ajoutez un troisième bloc
catchqui intercepte toute autreExceptionet affiche"Validation error: "suivi du message de l'exception
Dans le bloc finally, affichez "Validation process completed".
Format d'entrée :
- Première ligne : Une chaîne représentant l'adresse e-mail (exemple :
user@example.comouinvalidemail.com) - Deuxième ligne : Une chaîne représentant le numéro de téléphone (exemple :
1234567890ou12345) - Troisième ligne : Un entier représentant l'exigence d'âge minimum (exemple :
18) - Quatrième ligne : Un entier représentant l'âge réel (exemple :
25ou16)
Sortie attendue :
- Si toutes les données sont valides :
User data is validsuivi deValidation process completedsur une nouvelle ligne - Si l'e-mail est invalide :
Email error: Email must contain @ symbolsuivi deValidation process completedsur une nouvelle ligne - Si le numéro de téléphone est invalide :
Validation error: Phone number must be 10 digitssuivi deValidation process completedsur une nouvelle ligne - Si l'âge est inférieur au minimum :
Age error: User must be at least X years old(où X est l'âge minimum) suivi deValidation process completedsur une nouvelle ligne
Essayez vous-même
<?php
// Lire les entrées
$email = trim(fgets(STDIN));
$phone = trim(fgets(STDIN));
$minAge = intval(fgets(STDIN));
$actualAge = intval(fgets(STDIN));
// TODO: Créer des classes d'exception personnalisées ici
// Créer la classe InvalidEmailException
// Créer la classe InvalidAgeException
// TODO: Créer la fonction validateUserData ici
// La fonction doit accepter quatre paramètres : email, phone, minAge, actualAge
// Implémenter la logique de validation à l'intérieur de la fonction
// TODO: Utiliser un bloc try...catch...finally pour appeler la fonction
// Appeler validateUserData avec les valeurs d'entrée
// Ajouter des blocs catch pour InvalidEmailException, InvalidAgeException et Exception générique
// Ajouter le bloc finally
?>Toutes les leçons de Logique & Flux
1Fonctions avancées
Fonctions anonymesClosures et 'use'Fonctions fléchéesFonctions de rappelUtilisation de 'call_user_func'Fonctions variablesPassage par référenceFonctions récursivesRécapitulatif : Mélange de fonctions4Tableaux multidimensionnels
Créer un tableau 2DAccéder aux éléments d'un tableau 2DModifier les éléments d'un tableau 2DItérer avec des boucles imbriquéesTableaux associatifs 2DRécapitulatif : Exercice de grille simple2Manipulations avancées de tableaux
Ajouter avec 'array_push'Supprimer avec 'array_pop'Ajouter avec 'array_unshift'Supprimer avec 'array_shift'Fusionner des tableaux indexésFusionner des tableaux associatifsExtraire avec 'array_slice'Valeurs avec 'in_array'Clés avec 'array_search'Récapitulatif : Exercice Playlist5Carnet de notes des élèves
Configuration du projet : Structure de donnéesAjouter un nouvel élèveAjouter une note à un élèveCalculer la moyenne d'un élèveTrouver le meilleur élèveGénérer un bulletin de notes8Gestion des erreurs et des exceptions
Comprendre les erreurs PHPLe bloc 'try...catch'Le bloc 'finally'Lancer une exceptionCréer une exception personnaliséeUtiliser une exception personnaliséeRécapitulatif : Validation des entrées3Tri des tableaux
Trier les tableaux indexés par ordre croissantTrier les tableaux indexés par ordre décroissantTrier les tableaux associatifs par valeurTrier les tableaux associatifs par cléTri par ordre naturelTri personnalisé avec 'usort'Récapitulatif : Tri d'un classement