2
respostas

Namespace e pastas

Na aula os namespaces estavam acompanhando a estrutura das pasta (Modelo e Modelo\Conta). O namespace precisar referenciar uma pasta ou ele é apenas um nome para organizar de uma forma mais abstrata?

2 respostas

Bom, depende.

Por exemplo, o instrutor usou a seguinte função de autoload:

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

Nessa função foi definida que o namespace base que é o 'Alura\Banco' está relacionada ao diretório 'src'. Isso foi feito usando o str_replace nesse caso. Mas todos os sub-namespaces devem ter exatamente o mesmo nome dos diretórios para um funcionamento correto.

Mas da mesma forma que foi definido que o namespace 'Alura\Banco' está apontada para o diretório 'src', você também pode fazer com que outros namespaces apontem para diretórios de nomes diferentes, dependendo da sua necessidade.

Gabriel, nós usamos uma simplificação da sugestão conhecida como PSR-4 (como foi comentado no curso).

Dá uma olhada nela aqui: https://cursos.alura.com.br/course/php-oo-heranca-polimorfirmo-interfaces/task/67551