Meu autoloader não está funcionando como o esperado com o código da aula.
<?php
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;
}
});
Para funcionar tive que adicionar o __DIR__ e o separador de diretórios na verificação e no require_once().
<?php
// Executes the given function when failing to load a class
spl_autoload_register(function (string $nomeClasse){
$basePath = __DIR__ . DIRECTORY_SEPARATOR;
$caminhoArquivo = str_replace('Alura\\Banco', "$basePath\src", $nomeClasse);
$caminhoArquivo = str_replace('\\', DIRECTORY_SEPARATOR, $caminhoArquivo); // DIRECTORY_SEPARATOR is a default constant of PHP
$caminhoArquivo .= '.php';
if (file_exists($caminhoArquivo)) {
require_once $caminhoArquivo;
} else {
echo "Caminho \"$caminhoArquivo\" não encontrado!";
exit();
}
});
A árvore de diretórios está assim:
Listagem de caminhos de pasta
C:\USERS\ALEXANDRE CARRETERO\GOOGLE DRIVE\ESTUDOS\PROGRAMACAO\ALURA\PHP\ALURA\ROOT
Alura-Banco
autoload.php
banco.php
README.md
src
Modelo
CPF.php
Endereco.php
Funcionario.php
Pessoa.php
Conta
Conta.php
Titular.php
Alguém pode me ajudar a entender o porquê?