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?
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?
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