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.";
}