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

Fatal error: Uncaugth Error

Estou tendo um problema quando tento rodar o código. Eu busquei fazer exatamente igual a vídeo aula apenas para ter problemas relacionados ao funcionamento, mas não funcionou.

Toda vez que executo recebo a seguinte mensagem de erro no navegador:

"Fatal error: Uncaught Error: Class 'classes\funcionarios\Diretor' not found in C:\xampp\htdocs\poo2\index.php:8 Stack trace: #0 {main} thrown in C:\xampp\htdocs\poo2\index.php on line 8"

#index.php
<?php

ini_set("display_errors", 1);
require_once "autoload.php";

use classes\funcionarios\Diretor;

$diretor = new Diretor();

var_dump($diretor);
?>

================================================
#autoload.php
<?php

function load($namespace){
    $namespace = str_replace("\\", DIRECTORY_SEPARATOR, $namespace);
    $caminoAbsoluto = __DIR__ . DIRECTORY_SEPARATOR . $namespace . ".php";
    return include_once $caminoAbsoluto;
}

spl_autoload_register(__NAMESPACE__ . "\load");

?>

===============================================

#Diretor.php
<?php

namespace classes\funcionarios;
class Diretor{

}

?>

Achei que o problema poderia ser com meu OS, então testei em uma maquina com Windows e o erro foi exatamente igual o recebido em meu notebook com GNU/Linux Mint 19.2.

Já li todas as perguntas feitas aqui no fórum, achei problemas muito similares e até segui as sugestão, porém não adiantou (DIRECTORY_SEPARATOR, foi uma das sugestões seguidas).

Se alguém puder me ajudar agradeço!

2 respostas
solução!

Márcio, boa tarde!

Eu testei aqui e consegui resolver, veja na função de autoload eu primero quis saber qual era o caminho que ele estava, pra isso no arquivo autoload eu adicionei

function load($namespace){
    $namespace = str_replace("\\", DIRECTORY_SEPARATOR, $namespace);
    $caminoAbsoluto = __DIR__ . DIRECTORY_SEPARATOR . $namespace . ".php";
    echo $caminoAbsoluto; //Essa 
    die(); // e essa linha
    return include_once $caminoAbsoluto;
}

Isso me retornava

/home/felipe/Documentos/Forum/php/classes/funcionarios/Diretor.php

Eu olhei o meu arquivo diretor.php e vi que ele estava no caminho correto, mas o primeiro d estava minusculo e a caminho procurava por um maiusculo, aí o nome do arquivo ficou Diretor.php batendo exatamente com o que foi procurado pela função Load

Espero ter ajudado e bons estudos!

Opa! Valeu, Felipe!!

Eu, sinceramente, não sei onde pode ter sido meu erro. Depois de ter cansado de quebrar cabeça em vão, dei o braço a torcer e refiz todo o projeto novamente e deu tudo certo!

Valeu pela ajuda!