Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desafio Exceções de Validação

Modifiquei o construtor da Classe "CPF", aplicando a exceção nativa InvalidArgumentException, a qual é lançada caso a string "$numero" não for do tipo esperado (XXX.XXX.XXX-XX);

public function __construct(string $numero)
    {
        $numero = filter_var($numero, FILTER_VALIDATE_REGEXP, [
            'options' => [
                'regexp' => '/^[0-9]{3}\.[0-9]{3}\.[0-9]{3}\-[0-9]{2}$/'
            ]
        ]);

        if ($numero === false) {
           throw new \InvalidArgumentException("O CPF precisa conter 11 caracteres numéricos (XXX.XXX.XXX-XX)");
        }
        $this->numero = $numero;
    }

Além disso, alterei a função final protegida "validaNome", utilizando a exceção nativa LengthException, a qual é lançada se o número de caracteres da string "$nomeTitular" for inválido (menor que 5 letras);

 final protected function validaNome(string $nomeTitular)
    {
        if (strlen($nomeTitular) < 5) {
           throw new \LengthException("O nome precisa conter 5 letras no mínimo ");
        }
    }

Por fim, utilizei o arquivo criado anteriormente pelo Vinicius para poder validar as alterações;

<?php

require_once 'autoload.php';

use Alura\Banco\Modelo\Conta\Titular;
use Alura\Banco\Modelo\Endereco;
use Alura\Banco\Modelo\CPF;

$endereco = new Endereco('Petrópolis', 'um bairro', 'minha rua', '71B');

try {
    $vinicius = new Titular(new CPF('123.456.789-01'), 'Vinicius', $endereco);

}catch(InvalidArgumentException | LengthException $exception){
    echo $exception -> getMessage().PHP_EOL;
}

2 respostas
solução!

Oi Lucas, como vai?

Excelente! Seu código ficou muito bom, o uso e o tratamento das exceptions ficou perfeito.

Parabéns pelo empenho na resolução dos desafios propostos!

Caso tenha quaisquer comentários ou dúvidas a respeito de alguma aula ou desafio, pode postar aqui no fórum que vamos te responder!

Abraços e bons estudos!

Muito Obrigado Murillo!!