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

Dúvida sobre o namespace

O nome do namespace App\Alura não deve ser igual ao directorio onde se encontra o projecto?

Neste caso a estrutura de directorio não deveria ser: src\App\Alura de acordo com o PSR4?

Vi como fez o autoload no curso de arrays e está bastante diferente. Achei a outra implementação mais simples e intuitiva.

A minha alternativa é:

spl_autoload_register(function(string $classCaminho){
    $caminhoSource = 'src';
    $classCaminho = str_replace('App', $caminhoSource, $classCaminho);
    $classCaminho = str_replace('\\', DIRECTORY_SEPARATOR, $classCaminho);
    $caminhoCompleto = $classCaminho . '.php';

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

Acha que está bem implementada?

Eu não incrementei no caminho o DIR e funcionou na mesma. Mas não sei se tem a ver com estar no Windows. Talvez no Linux seja preciso o caminho completo.

Dos testes que diz no windows, ele aceita tanto a ' \ ' como ' / '.

Obrigado

1 resposta
solução!

Olá Andre,

Como você disse o namespace vai seguir a estrutura de pastas, mas a pasta base e o namespace base você pode configurar diferentemente, como você até fez no seu exemplo associando a pasta src ao namespace App. Existe até a possibilidade de outras configurações mais avançadas com vários namespaces base diferentes.

Já o __DIR__ serve como uma garantia maior contra erros, facilitando que seja gerado o caminho completo dos arquivos.

O seu autoload alternativo é bom sim, e existem muitas possibilidades de autoloads diferentes, um que eu gosto de utilizar é a implementação mostrada no próprio site do PHP-FIG, segue o link:

https://www.php-fig.org/psr/psr-4/examples/#closure-example