No CPF
<?php
namespace Alura\Banco\Modelo;
use 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;
}
public function recuperaNumero(): string
{
return $this->numero;
}
}
No Nome
final protected function validaNome(string $nomeTitular)
{
if (strlen($nomeTitular) < 5) {
throw new NomeInvalidoException();
}
}
Teste
<?php
use Alura\Banco\Modelo\{CPF, Endereco};
use Alura\Banco\Modelo\Conta\{Titular, ContaCorrente, NomeInvalidoException};
require_once 'autoload.php';
try {
$conta = new ContaCorrente(
new Titular(
new CPF('123.456.789-20'),
'Tom',
new Endereco('Campos dos Goytacazes', 'Centro', 'Avenida 28 de Março', '574')
)
);
}catch(NomeInvalidoException $exception){
echo $exception->getMessage();
}