Menu
Coddy logo textTech

Recapitulação: Validação de Entrada

Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 58 de 68.

challenge icon

Desafio

Fácil

Você receberá quatro entradas: uma string de endereço de e-mail, uma string de número de telefone, um número de idade mínima e um número de idade real.

Crie duas classes de exceção personalizadas:

  • InvalidEmailException que estende a classe base Exception
  • InvalidAgeException que estende a classe base Exception

Crie uma função chamada validateUserData que aceite quatro parâmetros: email, phone, minimum age e actual age. Dentro desta função:

  • Verifique se o e-mail contém o símbolo @. Se não contiver, lance uma InvalidEmailException com a mensagem "Email must contain @ symbol"
  • Verifique se o comprimento do número de telefone é exatamente 10 caracteres. Se não for, lance uma Exception genérica com a mensagem "Phone number must be 10 digits"
  • Verifique se a idade real é menor que a idade mínima. Se for, lance uma InvalidAgeException com a mensagem "User must be at least X years old" (onde X é o valor da idade mínima)
  • Se todas as validações passarem, imprima "User data is valid"

Use um bloco try...catch...finally para chamar a função com as entradas fornecidas. Crie dois blocos catch separados:

  • O primeiro bloco catch deve capturar InvalidEmailException e imprimir "Email error: " seguido pela mensagem da exceção
  • O segundo bloco catch deve capturar InvalidAgeException e imprimir "Age error: " seguido pela mensagem da exceção
  • Adicione um terceiro bloco catch que capture qualquer outra Exception e imprima "Validation error: " seguido pela mensagem da exceção

No bloco finally, imprima "Validation process completed".

Formato de entrada:

  • Primeira linha: Uma string representando o endereço de e-mail (exemplo: user@example.com ou invalidemail.com)
  • Segunda linha: Uma string representando o número de telefone (exemplo: 1234567890 ou 12345)
  • Terceira linha: Um número inteiro representando o requisito de idade mínima (exemplo: 18)
  • Quarta linha: Um número inteiro representando a idade real (exemplo: 25 ou 16)

Saída esperada:

  • Se todos os dados forem válidos: User data is valid seguido por Validation process completed em uma nova linha
  • Se o e-mail for inválido: Email error: Email must contain @ symbol seguido por Validation process completed em uma nova linha
  • Se o número de telefone for inválido: Validation error: Phone number must be 10 digits seguido por Validation process completed em uma nova linha
  • Se a idade estiver abaixo do mínimo: Age error: User must be at least X years old (onde X é a idade mínima) seguido por Validation process completed em uma nova linha

Experimente você mesmo

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

// TODO: Criar classes de exceção personalizadas aqui
// Criar a classe InvalidEmailException
// Criar a classe InvalidAgeException

// TODO: Criar a função validateUserData aqui
// A função deve aceitar quatro parâmetros: email, phone, minAge, actualAge
// Implementar a lógica de validação dentro da função

// TODO: Usar o bloco try...catch...finally para chamar a função
// Chamar validateUserData com os valores de entrada
// Adicionar blocos catch para InvalidEmailException, InvalidAgeException e Exception genérica
// Adicionar bloco finally

?>

Todas as lições de Lógica & Fluxo