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

No meu arquivo banco.php, quando eu chamo a classe Conta apresenta um erro de "Uso de classe desconhecida"

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:

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

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

Oii, Isabeli. Tudo bem?

Não é nenhum erro no código o que aparenta ser, mas deve ser do VsCode pelo fato de você está usando alguma extesão.

Tenta ver essas extensões que são mencionadas nessa atividade para ver se resolve:

https://cursos.alura.com.br/course/php-primeiros-passos/task/123430

Bons estudos!

Olá Vinicius, estou bem e você?

Eu já havia concluído esse curso e também já tenho essas extensões instaladas. :)

Tudo joia. E mesmo assim o aviso do VsCode continua?

solução!

Sim, continuava o erro. Eu acabei avançando no curso, e depois de colocar a classe Conta como abstrata, e no arquivo banco.php chamar como ContaCorrente no lugar de Conta, não apareceu mais o erro.

Acho que pode encerrar esse tópico aqui no fórum, obrigada pela atenção!

Vou marcar sua resposta como solução :)

Bons estudos :)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software