Comportamento diferente de spl_autoload_register b/n online e localhost
-
21-12-2019 - |
Pergunta
Eu tenho a seguinte estrutura de diretórios, coloquei todas as minhas classes dentro classes/
como mostrado abaixo, e eu tenho um header.php
que chama todos os arquivos e possui outras configurações importantes que todos os arquivos compartilham.
Agora, se eu usar spl_autoload_register()
Por aqui:
spl_autoload_register(function($class){
include 'classes/'. $class .'.class.php';
});
dentro inc/header.php
arquivo e chame isso header.php
do meu index
arquivo, ele funciona bem no meu host local, mas quando carrego todo o script como está para um host ativo, recebo erros como.
Warning: include(classes/filehandler.class.php) [function.include]: failed to open stream: No such file or directory in /home/.../public_html/....com/inc/header.php on line 9
Line 9
é o spl_autoload_register()
Não entendo como isso pode acontecer e espero que alguém tenha alguma ideia.
obrigado
Solução
Para mostrar o que quero dizer com meus comentários, adicione este código em seu arquivo index.php e remova o autoloader de seus outros arquivos:
spl_autoload_register(function($class){
$classesPath = dirname(__FILE__) . '/classes/';
if (is_file($classFile = $classesPath . $class.'.class.php')) {
include $classFile;
}
});
Para inc/header.php:
spl_autoload_register(function($class){
$classesPath = dirname(__FILE__) . '/../classes/';
if (is_file($classFile = $classesPath . $class.'.class.php')) {
include $classFile;
}
});