Olá, espero encontra-lo bem!
Estou seguindo os passos do projeto que está sendo mostrado nas aulas, e após concluir a aula "2.7 Autoload de classes", o meu projeto roda mas apresenta um alerta que não consigo corrigir. Já baixei o projeto do curso e comparei com o meu, e mesmo estando igual continua dando o alerta:
arquivo banco.php
<?php
require_once 'autoload.php';
use Alura\Banco\Modelo\Conta\Titular;
use Alura\Banco\Modelo\Endereco;
use Alura\Banco\Modelo\CPF;
use Alura\Banco\Modelo\Conta\Conta;
$endereco = new Endereco('São Paulo', 'Petrópolis', 'Um Bairro', 'Minha Rua', '776B');
$isabeli = new Titular(new CPF('123.456.789-10'), 'Isabeli Reik', $endereco);
$primeiraConta = new Conta($isabeli);
$primeiraConta->depositar(500);
$primeiraConta->sacar(300);
var_dump($primeiraConta);
echo $primeiraConta->recuperaNomeTitular() . PHP_EOL;
echo $primeiraConta->recuperaCPFTitular() . PHP_EOL;
echo $primeiraConta->recuperarSaldo() . PHP_EOL;
$joao = new Titular(new CPF('921.969.894-21'), 'João Silva', $endereco);
$segundaConta = new Conta($joao);
$outroEndereco = new Endereco('SP', 'A', 'b', 'c', '1D');
// método destruct entrou em ação, pois existe um objeto criado que não está sendo apontado por uma variável
new Conta(new Titular(new CPF('521.965.854-77'), 'uashaush', $outroEndereco));
echo Conta::recuperaNumeroDeContas() . PHP_EOL;
$ana = new Titular(new CPF('421.464.894-21'), 'Ana', $outroEndereco);
$terceiraConta = new Conta($ana);
arquivo Conta.php
<?php
namespace Alura\Banco\Modelo\Conta;
class Conta {
private $titular; // composição de outros objetos
private $saldo; // atributos
private static $numeroDeContas = 0; // atributo da classe em si
// aqui não deve ser inserido muitas regras de negócios, somente as inicializações dos atributos
public function __construct(Titular $titular) {
$this->titular = $titular; // o this acessa a instância (objeto)
$this->saldo = 0;
//echo "Criando nova conta...\n";
self::$numeroDeContas++; // acessa a partir da classe
}
public function __destruct() { // ciclo de vida dos objetos
if (self::$numeroDeContas > 2) {
//echo "Há mais de uma conta ativa!\n";
self::$numeroDeContas--;
}
}
public function sacar(float $valorASacar): void {
if ($valorASacar > $this->saldo) {
echo "Saldo indisponível!";
return; // evitar ao máximo utilizar o else
}
$this->saldo -= $valorASacar;
}
public function depositar(float $valorADepositar): void {
if ($valorADepositar < 0) {
echo "Valor precisa ser positivo!";
return;
}
$this->saldo += $valorADepositar;
}
public function transferir(float $valorATransferir, Conta $contaDestino): void {
if ($valorATransferir > $this->saldo) {
echo "Saldo indisponível!";
return;
}
$this->sacar($valorATransferir);
$contaDestino->depositar($valorATransferir);
}
public function recuperarSaldo(): float {
return $this->saldo;
}
public function recuperaNomeTitular(): string {
return $this->titular->recuperaNome();
}
public function recuperaCpfTitular(): string {
return $this->titular->recuperaCpf();
}
public static function recuperaNumeroDeContas(): int {
return self::$numeroDeContas;
}
}