Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Desafio Exceções de Validação

Validação CPF

<?php

namespace Alura\Banco\Modelo;

use http\Exception\InvalidArgumentException;

final class CPF
{
    private $numero;

    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();
        }
        $this->numero = $numero;
    }

Validação Nome

<?php

namespace Alura\Banco\Modelo;

use Alura\Banco\Modelo\Conta\NomeInvalidoException;

abstract class Pessoa
{
    use AcessoPropriedades;

    protected $nome;
    private $cpf;



    final protected function validaNome(string $nome)
    {
        if (strlen($nome) < 5) {
            throw new NomeInvalidoException($nome);
        }
    }
}

Teste

<?php

use Alura\Banco\Modelo\Conta\{ContaPoupanca, ContaCorrente, NomeInvalidoException, SaldoInsuficienteException, Titular};
use Alura\Banco\Modelo\{CPF, Endereco};

require_once 'autoload.php';

try {
    $conta = new ContaCorrente(
        new Titular(
            new CPF('123.456.789-20'),
            'Pedro Ramos',
            new Endereco('Petrópolis', 'b Teste', 'Rua lá', '31')
        )
    );
} catch (InvalidArgumentException $problema){

    echo $problema->getMessage().PHP_EOL;

} catch (NomeInvalidoException $problema){
    echo $problema->getMessage();
}
1 resposta
solução!

Boa, Pedro! Muito bom!!

Mas no seu caso você tem 2 catches com um código idêntico. Por que não agrupar em 1 catch só?