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

Desafio Exceções de Validação - NOME E CPF

Primeiro fiz a exceção do cpf criei um classe chamada CPFexception na mesma local da classe cpf

<?php

namespace Alura\Banco\Modelo;

class CPFexception extends \DomainException
{
    public function __construct ()
    {
        $msg= "Cpf com formato invalido, formato aceito e 000.000.000-00";
        parent::__construct($msg);
    }

}

depois fui na classe cpf , dentro do if lancei a exceção

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

depois , fui criar a exceção do nome, na classe pessoa mudei função validaNome ficando assim

final protected function validaNome(string $nomeTitular)
    {
        if (strlen($nomeTitular) < 5) {
           throw new \InvalidArgumentException();
        }
    }

na classe teste-deposito coloquei as duas exceções la :

<?php  


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

require_once 'autoload.php';

try{
$contaCorrente = new ContaCorrente (
    new Titular(
        new CPF ("147.852.900-98"),
        'ralina',
        new Endereco ('Cidade', 'Bairro', 'rua','numero' )
    )
);  }

catch (CPFexception $exception){

    echo "Erro no cpf".PHP_EOL;
    echo $exception->getMessage();
    exit();

}catch (InvalidArgumentException $exception){

    echo "Erro no Nome, precisa ter no minimo 5 letras";
    exit();
}

try {
    $contaCorrente->deposita(100);

}catch (InvalidArgumentException $exception) {

    echo "Valor a depositar precisa ser positivo.";
}
1 resposta
solução!

Me parece tudo correto.