Ao tentar rodar, dá esse erro:
Fatal error: Uncaught Error: Call to a member function recuperaCpf() on null in C:\Users\Bruna\Desktop\PHP\orientacao-a-objetos\src\Conta.php:68 Stack trace:
#0 C:\Users\Bruna\Desktop\PHP\orientacao-a-objetos\banco.php(10): Conta->recuperaCpfTitular()
#1 {main} thrown in C:\Users\Bruna\Desktop\PHP\orientacao-a-objetos\src\Conta.php on line 68
código da CLASSE CONTA:
<?php
class Conta
{
private $titular;
private float $saldo;
private static $numeroDeContas = 0; //atributo geral da classe
public function __construct(Titular $titular)
{
$this->titular = $titular;
$this->saldo = 0;
Conta::$numeroDeContas++;
}
public function __destruct()
{
if(self::$numeroDeContas > 2){
echo "Há mais de uma conta ativa";
}
}
public function sacar(float $valorASacar): void
{
if($valorASacar > $this->saldo){
echo "Saldo indisponível";
return;
}
$this->saldo -= $valorASacar;
}
public function depositar(float $valorADepositar): void
{
if($valorADepositar < 0){
echo "Valor precisa ser maior que zero";
return;
} //else{
$this->saldo += $valorADepositar;
}
public function transferir(float $valorATransferir, Conta $contaDestino): void
{
if($valorATransferir > $this->saldo){
echo "Saldo indisponível";
return;
} //else {
$this->sacar($valorATransferir);
$contaDestino->depositar($valorATransferir);
}
public function recuperaSaldo(): float
{
return $this->saldo;
}
public static function recuperaNumeroDeContas(): int
{
return self::$numeroDeContas;
}
public function recuperaCpfTitular(): string
{
return $this->cpf->recuperaCpf();
}
public function recuperaNomeTitular(): string
{
return $this->nome->recuperaNome();
}
}
CÓDIGO DA CLASSE TITULAR:
<?php
class Titular{
private string $cpf;
private string $nome;
public function __construct(string $cpf, string $nome)
{
$this->cpf = $cpf;
$this->validaNome($nome);
$this->nome = $nome;
}
private function validaNome($nome)
{
if (strlen($nome)<5){
echo "Nome precisa ter pelo menos 5 caracteres";
exit();
}
}
public function recuperaCpf(): string
{
return $this->cpf;
}
public function recuperaNome(): string
{
return $this->nome;
}
}
CÓDIGO DO BANCO:
<?php
require_once 'src/Conta.php';
require_once 'src/Titular.php';
$primeiraConta = new Conta(new Titular ('123.456.789-10', 'Vinicius Dias'));
$primeiraConta->depositar(500);
$primeiraConta->sacar(200);
echo $primeiraConta->recuperaCpfTitular() .PHP_EOL;
echo $primeiraConta->recuperaNomeTitular() .PHP_EOL;
echo $primeiraConta->recuperaSaldo() .PHP_EOL;
$segundaConta = new Conta(new Titular ('789.456.321-10', 'Patricia'));
echo $segundaConta->recuperaNomeTitular() .PHP_EOL;
echo $segundaConta->recuperaCpfTitular() .PHP_EOL;
echo $segundaConta->recuperaSaldo() .PHP_EOL;
echo Conta::recuperaNumeroDeContas();