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

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

<?php
namespace Alura\Banco\Modelo;
use Exception;
class ValidacaoCpfException extends Exception 
{
    public function __construct()
    {   
        $cpf = false;
        $mensagem = "O CPF precisa ser do formato válido: 123.456.789-10";
        parent::__construct($mensagem);
    }
}

Arquivo CPF:

namespace Alura\Banco\Modelo;

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

    public function recuperaNumero(): string
    {
        return $this->numero;
    }
}

Arquivo Teste:

<?php 

use Alura\Banco\Modelo\CPF;
use Alura\Banco\Modelo\ValidacaoCpfException;

require "autoload.php";

try{
    $novoCpf = new CPF('12355152245555');
}catch(ValidacaoCpfException $exception){
    echo $exception->getMessage().PHP_EOL;
}

2 respostas
solução!

Fala, Guilherme.

Só 1 dúvida quanto ao código:

Por que você cirou a variável $cpf = false; na classe da exceção se essa variável nunca é utilizada? Ah, detalhe: Parece que você não colocou alguns espaços na parte de importação das classes também. Isso fere a PSR-12. :-)

E deixo também uma observação pessoal: Eu tento evitar mistura de português com inglês, então ValidacaoCpfException quebraria essa minha "regra"...

Só pra vc se questionar sobre isso tbm. ;-)

Fora esses detalhes, parece tudo certinho. :-D

Eae, professor Vinicius

Essa variável ($cpf = false) eu retirei depois de alguns teste, pois eu a criei achando que o erro precisava entender que seria falso, mas depois de alguns testes percebi que o erro era onde eu tinha colocado o try/catch . E em relação ao psr-12 , foi falta de atenção, pois ainda estou me acostumando com a psr .