Menu
Coddy logo textTech

Récapitulatif : Validation des entrées

Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 58 sur 68.

challenge icon

Défi

Facile

Vous 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 :

  • InvalidEmailException qui étend la classe de base Exception
  • InvalidAgeException qui étend la classe de base Exception

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 une InvalidEmailException avec 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 Exception gé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 InvalidAgeException avec 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 catch doit intercepter InvalidEmailException et afficher "Email error: " suivi du message de l'exception
  • Le deuxième bloc catch doit intercepter InvalidAgeException et afficher "Age error: " suivi du message de l'exception
  • Ajoutez un troisième bloc catch qui intercepte toute autre Exception et 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.com ou invalidemail.com)
  • Deuxième ligne : Une chaîne représentant le numéro de téléphone (exemple : 1234567890 ou 12345)
  • 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 : 25 ou 16)

Sortie attendue :

  • Si toutes les données sont valides : User data is valid suivi de Validation process completed sur une nouvelle ligne
  • Si l'e-mail est invalide : Email error: Email must contain @ symbol suivi de Validation process completed sur une nouvelle ligne
  • Si le numéro de téléphone est invalide : Validation error: Phone number must be 10 digits suivi de Validation process completed sur 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 de Validation process completed sur 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