Não consigo achar o problema, se puderem me dar uma ajuda, agradeço
autoload
<?php
// A função autoload irá substituir o endereço:
// Alura\Banco\Modelo\Endereco
// Pelo enderço:
// src/Modelo/Endereco
spl_autoload_register(function (string $nomeCompletoDaClasse){
$caminhoArquivo = str_replace('Alura\\Banco', 'src', $nomeCompletoDaClasse);
$caminhoArquivo = str_replace('\\', DIRECTORY_SEPARATOR, $caminhoArquivo);
$caminhoArquivo .= '.php';
if(file_exists($caminhoArquivo)) {
require_once $caminhoArquivo;
}
});
banco
<?php
require_once 'autoload.php';
// importa as classes Utilizando o namespace
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('curitiba', 'um bairro', 'uma rua', '52');
$vinicius = new Titular(new CPF('123.456.789-10'), 'Vinicius Dias', $endereco);
$primeiraConta = new Conta($vinicius);
$primeiraConta->deposita(500);
$primeiraConta->saca(300);
echo $primeiraConta->recuperaNomeTitular() . PHP_EOL;
echo $primeiraConta->recuperaCpfTitular() . PHP_EOL;
echo $primeiraConta->recuperaSaldo() . PHP_EOL;
$patricia = new Titular(new CPF('698.549.548-10'), 'Patricia', $endereco);
$segundaConta = new Conta($patricia);
var_dump($segundaConta);
$outra = new Conta(new Titular(new CPF('123.654.789-01'), 'Abcdefg', $endereco));
unset($segundaConta);
echo Conta::recuperaNumeroDeContas();
teste-saque
<?php
use Alura\Banco\Modelo\Conta\ContaPoupanca;
use Alura\Banco\Modelo\Conta\ContaCorrente;
use Alura\Banco\Modelo\Conta\Titular;
use Alura\Banco\Modelo\CPF;
use Alura\Banco\Modelo\Endereco;
require_once 'autoload.php';
$conta = new ContaPoupanca(
new Titular(
new CPF('123.456.789-10'),
'Vinicius Dias',
new Endereco('Petrópolis', 'bairro Teste', 'Rua lá', '37')
)
);
$conta->deposita(500);
$conta->saca(100);
echo $conta->recuperaSaldo();
conta
<?php
namespace Alura\Banco\Modelo\Conta;
// importa as classes Utilizando o namespace
class Conta
{
private $titular;
private $saldo;
private static $numeroDeContas = 0;
private float $tipo;
public function __construct(Titular $titular, float $tipo)
{
$this->titular = $titular;
$this->saldo = 0;
$this->tipo = $tipo;
self::$numeroDeContas++;
}
public function __destruct()
{
self::$numeroDeContas--;
}
public function saca(float $valorASacar): void
{
if ($this->tipo === 1) {
$tarifaSaque = $valorASacar * 0.05;
} else {
$tarifaSaque = $valorASacar * 0.03;
}
$valorSaque = $valorASacar + $tarifaSaque;
if ($valorSaque > $this->saldo) {
echo "Saldo indisponível";
return;
}
$this->saldo -= $valorSaque;
}
public function deposita(float $valorADepositar): void
{
if ($valorADepositar < 0) {
echo "Valor precisa ser positivo";
return;
}
$this->saldo += $valorADepositar;
}
public function transfere(float $valorATransferir, Conta $contaDestino): void
{
if ($valorATransferir > $this->saldo) {
echo "Saldo indisponível";
return;
}
$this->sacar($valorATransferir);
$contaDestino->depositar($valorATransferir);
}
public function recuperaSaldo(): 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;
}
}