Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Fatal error: Uncaught Error: Class "Alura\Banco\Modelo\Conta\ContaPoupanca" not found in C:\xampp\htdocs\PHP - Alura\A - Orientação a objetos\src\teste-saque.php:11

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;
    }
}
4 respostas

Oi, Rodrigo, como vai?

Aqui funcionou normalmente, provavelmente o problema é com o autoload.

Como está a estrutura de pastas do seu projeto? Mande um print, por favor.

Fico no aguardo.

Abraços!

Acredito estar igual a construída na aula, cheguei a baixar o arquivo do professor para verificar a estrutura...

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

solução!

Oi, Rodrigo, como vai?

Pelo print deu para perceber que o arquivo ContaPoupanca não foi criado em seu diretório, e o arquivo teste-saque está tentando utilizar a classe ContaPoupanca, por isso o erro está acontecendo.

Espero ter ajudado.

Abraços e bons estudos!

Ajudou sim Murilo, muito Obrigado!