No momento em que eu chamo o método (recuperarEndereco), fala que o método não foi definido.
undefined method 'recuperarEndereco';
call to unkown method: Conta::recuperarEndereco();
banco.php
<?php
require_once 'src/Endereco.php';
require_once 'src/Conta.php';
require_once 'src/Titular.php';
require_once 'src/Cpf.php';
require_once 'src/Nome.php';
$endereco = new Endereco('SP','Assunção','Jucelino','12');
$nome = new Nome('Weverton');
$cpf = new Cpf('123.456.789-10');
$weverton = new Titular($cpf, $nome, $endereco);
$primeiraConta = new Conta($weverton);
$primeiraConta->depositar(1000);
echo $primeiraConta->recuperarCpfTitular() . PHP_EOL;
echo $primeiraConta->recuperarNomeTitular() . PHP_EOL;
echo $primeiraConta->recuperarSaldo() . PHP_EOL;
echo $primeiraConta->recuperarEndereco() . PHP_EOL;
echo Conta::numeroDeContas() . PHP_EOL;
Titular.php
<?php
class Titular
{
private Nome $nome;
private Cpf $cpf;
private Endereco $endereco;
public function __construct(Cpf $cpf, Nome $nome, Endereco $endereco){
$this->cpf = $cpf;
$this->nome = $nome;
$this->validaNome($nome);
$this->endereco = $endereco;
}
public function recuperarCpf() : string
{
return $this->cpf->recuperarCpf();
}
public function recuperarNome() : string
{
return $this->nome->recuperarNome();
}
private function validaNome($nome)
{
if(strlen($this->nome->recuperarNome()) < 5){
echo 'Numero insuficiente de caracteres' . PHP_EOL;
exit;
}
}
public function recuperarEndereco() : Endereco
{
return $this->endereco;
}
}
Endereco.php
<?php
class Endereco
{
private string $cidade;
private string $bairro;
private string $rua;
private string $numero;
public function __construct(string $cidade, string $bairro, string $rua, string $numero)
{
$this->cidade = $cidade;
$this->bairro = $bairro;
$this->rua = $rua;
$this->numero = $numero;
}
public function recuperarCidade() : string
{
return $this->cidade;
}
public function recuperarBairro() : string
{
return $this->bairro;
}
public function recuperarRua() : string
{
return $this->rua;
}
public function recuperarNumero() : string
{
return $this->numero;
}
}
Conta.php
<?php
require_once 'src/Titular.php';
class Conta
{
private float $saldo = 0;
private static $numeroDeContas = 0;
private Titular $titular;
public function __construct(Titular $titular)
{
$this->titular = $titular;
$this->saldo = 0;
self::$numeroDeContas++;
}
public function sacarSaldo(float $valorASacar) : void
{
if($valorASacar > $this->saldo){
echo 'Você não pode sacar esse valor' . PHP_EOL;
return;
}
$this->saldo -= $valorASacar;
}
public function depositar(float $valorADepositar) : void
{
if($valorADepositar < 0){
'Valor precisa ser positivo' . PHP_EOL;
return;
}
$this->saldo += $valorADepositar;
}
public function transferir(float $valorATransferir, Conta $contaDestino) : void
{
if($valorATransferir > $this->saldo){
echo 'Saldo insuficiente' . PHP_EOL;
return;
}
$this->sacarSaldo($valorATransferir);
$contaDestino->depositar($valorATransferir);
}
public function recuperarSaldo() : float
{
return $this->saldo;
}
public function recuperarCpfTitular()
{
return $this->titular->recuperarCpf();
}
public function recuperarNomeTitular() : string
{
return $this->titular->recuperarNome();
}
public static function numeroDeContas() : int
{
return self::$numeroDeContas;
}
}