1
resposta

autoload e use

Olá Vinicios, seguinte tenho feito os arquivos iguais os seus da aula, porém estou tendo problemas, vários sublinhados, uso o vstudio, depois que coloquei o namespace, todas as referências a outras classes ficaram sublinhadas como erro, segundo o php info do xampp, diz que o php é a versão 8 alguma coisa.

o erro é este

PHP Fatal error:  Uncaught Error: Class "Alura\Banco\Modelo\Endereco" not found in C:\xampp\htdocs\Alura\Banco\banco.php:10
Stack trace:
#0 {main}
  thrown in C:\xampp\htdocs\Alura\Banco\banco.php on line 10

Fatal error: Uncaught Error: Class "Alura\Banco\Modelo\Endereco" not found in C:\xampp\htdocs\Alura\Banco\banco.php:10Stack trace:
#0 {main}
  thrown in C:\xampp\htdocs\Alura\Banco\banco.php on line 10

o codigo do arquivo banco é este aqui:

<?php

require_once 'autoload.php';

use Alura\Banco\Modelo\Endereco;
use Alura\Banco\Modelo\Conta\Titular;
use Alura\Banco\Modelo\Cpf;
use Alura\Banco\Modelo\Conta\Conta;

$endereco1 = new Endereco('Dourados','Pq Alvorada','Albert ainsten','2345');
$endereco2 = new Endereco('Ponta','Pq Alvorada','Marcos Alfred','2345');
$endereco3 = new Endereco('Campo Grande','Pq Alvorada','Filé mignon','2345');
$vinicios = new Titular(new Cpf('123.456.789-10'), 'Vinicius Dias',$endereco);
$primeiraConta = new Conta($vinicios);

$primeiraConta->deposita(500);
$primeiraConta->saca(300); // isso é ok

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',$endereco2);
$segundaConta = new Conta($patricia);
var_dump($segundaConta);

$outra = new Conta(new Titular(new Cpf('123.625.794-56'), 'Abcdefg',$endereco3));
unset($segundaConta);
echo Conta::recuperaNumeroDeContas();

codigo do autoload é:

<?php

spl_autoload_register(function (string $nomeCompletoDaClasse)
{
    $caminhoArquivo = str_replace('Alura\\Banco', 'src',$nomeCompletoDaClasse);
    $caminhoArquivo = str_replace('\\', DIRECTORY_SEPARATOR, $caminhoArquivo);
    $caminhoArquivo .= '.php';

    //echo $caminhoArquivo;
    //exit();

    if (file_exists($caminhoArquivo)) {
        require_once $caminhoArquivo;
    }
});

o caminho do htdocs é:

c:\xamp\htdocs\Alura\Banco\Modelo e c:\xamp\htdocs\Alura\Banco\Modelo\Conta

e o curso é: https://cursos.alura.com.br/course/php-oo-heranca-polimorfirmo-interfaces/task/66021

1 resposta

Reissoli, seu autoloader ou sua estrutura de pastas está errada. Você não tem a pasta src. :-)

PS.: https://dias.dev/2021-04-10-por-que-nao-usar-xampp/