3
respostas

Erros na complição do Php Avançado

Olá Alura, tudo bom?

estou com esse erro aqui: Fatal error: Uncaught Error: Cannot instantiate abstract class Alura\Banco\Modelo\Conta\Conta in C:\xampp\htdocs\Alura_php\banco.php:12 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Alura_php\banco.php on line 12

Aqui está o link do github: git@github.com:tiagobrandao03/Alura_php.git

3 respostas

Oii, Tiago

A classe Conta é abstrata e não pode ser instanciada diretamente.

Classes abstratas são como "modelos" para outras classes. Elas podem definir métodos e propriedades, mas não podem ser instanciadas por si mesmas.

Por exemplo, se você tem uma classe abstrata Conta e duas classes ContaCorrente e ContaPoupanca que estendem Conta, você deve instanciar ContaCorrente ou ContaPoupanca, não Conta.

Então, em vez de fazer algo como:

$conta = new Conta();

Você deveria fazer algo como:

$conta = new ContaCorrente();
// ou
$conta = new ContaPoupanca();

Espero ter ajudado e bons estudos!

Consigui substituir aqui. Agora preciso corrigir esse erro aqui: Erro: Fatal error: Class 'Alura\Banco\Modelo\Conta\Conta' not found in C:\xampp\htdocs\Alura_php\src\Modelo\Conta\ContaCorrente.php on line 6

ContaCorrente.php
**<?php

namespace Alura\Banco\Modelo\Conta;

use Alura\Banco\Modelo\Conta\Conta;
class ContaCorrente extends Conta{
    protected function percentualTarifa(): float
    {
        return 0.05;
    }

    public function transfere(float $valorATransferir, Conta $contaDestino): void
    {
        if ($valorATransferir > $this->saldo) {
            echo "Saldo indisponível";
            return;
        }

        $this->sacar($valorATransferir);
        $contaDestino->depositar($valorATransferir);
    }
}

** Link do git: git@github.com:tiagobrandao03/Alura_php.git

Oii, Tiago.

Eu rodei o seu código aqui e funcionou, mas usei o PHP da forma que o instrutor aborda no curso, pela linha de comando. Sem o uso do XAMPP.

Outra coisa você pode retirar todos os requires do arquivo banco.php, você precisa deixar apenas o require do autoload.

Certifique que você está rodando o código banco.php