Recapitulação: Validação de Entrada
Parte da seção Lógica & Fluxo do Journey de PHP da Coddy — lição 58 de 68.
Desafio
FácilVocê 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:
InvalidEmailExceptionque estende a classe baseExceptionInvalidAgeExceptionque estende a classe baseException
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 umaInvalidEmailExceptioncom a mensagem"Email must contain @ symbol" - Verifique se o comprimento do número de telefone é exatamente 10 caracteres. Se não for, lance uma
Exceptiongené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
InvalidAgeExceptioncom 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
catchdeve capturarInvalidEmailExceptione imprimir"Email error: "seguido pela mensagem da exceção - O segundo bloco
catchdeve capturarInvalidAgeExceptione imprimir"Age error: "seguido pela mensagem da exceção - Adicione um terceiro bloco
catchque capture qualquer outraExceptione 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.comouinvalidemail.com) - Segunda linha: Uma string representando o número de telefone (exemplo:
1234567890ou12345) - 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:
25ou16)
Saída esperada:
- Se todos os dados forem válidos:
User data is validseguido porValidation process completedem uma nova linha - Se o e-mail for inválido:
Email error: Email must contain @ symbolseguido porValidation process completedem uma nova linha - Se o número de telefone for inválido:
Validation error: Phone number must be 10 digitsseguido porValidation process completedem 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 porValidation process completedem 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
1Funções Avançadas
Funções AnônimasClosures e 'use'Arrow FunctionsFunções de CallbackUsando 'call_user_func'Funções VariáveisPassagem por ReferênciaFunções RecursivasRecapitulação: Mix de Funções4Arrays Multidimensionais
Criando um Array 2DAcessando Elementos de um Array 2DModificando Elementos de um Array 2DIterando com Loops AninhadosArrays Associativos 2DRecapitulação: Exercício de Grade Simples2Manipulações Avançadas de Arrays
Adicionando com 'array_push'Removendo com 'array_pop'Adicionando com 'array_unshift'Removendo com 'array_shift'Mesclando Arrays IndexadosMesclando Arrays AssociativosExtraindo com 'array_slice'Valores com 'in_array'Chaves com 'array_search'Recapitulação: Exercício de Playlist5Boletim de Alunos
Configuração do Projeto: Estrutura de DadosAdicionando um Novo AlunoAdicionando uma Nota a um AlunoCalculando a Média do AlunoEncontrando o Melhor AlunoGerando um Boletim8Tratamento de Erros e Exceções
Entendendo Erros no PHPO Bloco 'try...catch'O Bloco 'finally'Lançando uma ExceçãoCriando uma Exceção PersonalizadaUsando uma Exceção PersonalizadaRecapitulação: Validação de Entrada3Ordenação de Arrays
Ordenar Arrays Indexados (Crescente)Ordenar Arrays Indexados (Decrescente)Ordenar Arrays Associativos por ValorOrdenar Arrays Associativos por ChaveOrdenação por Ordem NaturalOrdenação Personalizada com 'usort'Recapitulação: Ordenação de Leaderboard