2
respostas

Autoload

Boa tarde ! quem pode me ajudar nessa questão:

1 -> estou usando visual studio para roda os codigos estou usando o xampp 2-> estou com duvida quando faço o autoload para xampp qual a estrutura das pastas o meu sempre da um erro

<?php

spl_autoload_register(function(String $nomeCompletoDaClasse){

    $caminhoArquivo = str_replace('\Moraes//Classes', 'src', $nomeCompletoDaClasse);
    $caminhoArquivo = str_replace('\\', DIRECTORY_SEPARATOR, $caminhoArquivo);
    $caminhoArquivo .= '.php';



    var_dump($caminhoArquivo);

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

<?php

namespace Moraes\Classes;

class Pessoa {

    public function exibirPessoa(): void{
        echo 'Pessoa';
    }

}

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

2 respostas

string(25) "Moraes\Classes\Pessoa.php" Fatal error: Uncaught Error: Class "Moraes\Classes\Pessoa" not found in C:\xampp\htdocs\Cadastro\index.php:7 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Cadastro\index.php on line 7

Olá, Reginaldo. Tudo bem?

Agradeço por aguardar uma resposta =)

Na função de autoload:

$caminhoArquivo = str_replace('\Moraes//Classes', 'src', $nomeCompletoDaClasse);

Altere para:

$caminhoArquivo = str_replace('Moraes\\Classes', 'src', $nomeCompletoDaClasse);

Devemos colocar duas \ barras inversas para o PHP ler isso: Moraes\\Classes e transformar nisto: Moraes\Classes. Se fosse colocado apenas 1 barra inversa o PHP iria entender que o próximo caractere teria um significado especial, um exemplo disso é o \n que é usado para pular linha.

Fazendo essas modificações diz se resolveu =)

Aproveitado a oportunidade, você disse que está usando o XAMPP, o Vinicius Dias tem um artigo bem legal que fala o porque a não usar esta ferramenta:

Espero ter ajudado =)

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓