Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problema no Autoload (file_exists retorna false, mas require_once funciona)

Estou tendo problemas com o Autoload.

Todos os arquivos estão identicos aos baixados da plataforma da Alura. Para descartar qualquer erro de digitação.

Ao rodar o arquivo banco.php, retorna: PHP Fatal error: Uncaught Error: Class 'Alura\Banco\Modelo\Endereco' not found in C:\OTAVIO\Alura\03_phpOO\banco.php:10 Stack trace:

#0 {main} thrown in C:\OTAVIO\Alura\03_phpOO\banco.php on line 10

o código só funciona se eu mover o require_once pra fora do "if (file_exists($caminhoArquivo))", ou seja utilizar o require_once do autoload sem nenhuma verificação.

O arquivo autoload.php (recém baixado da plataforma): <?php

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

});

Vi que outras pessoas tiveram o mesmo erro, mas não consegui entender qual foi o problema. Estou utilizando o VSCODE, com php 7.3

1 resposta
solução!

OBS: Eu estava usando o comando Run Code no VS Code. Aí retorna o erro. Mas se eu for no terminal e rodar o arquivo pelo PHP, aí não retorna o erro.

Usando o Comando Run Code não funciona

No terminal Funciona