Salut !
Je poste car j'ai un petit soucis et je n'arrive pas à le résoudre.
J'essaie de développer une petite appli php mais j'ai quelques soucis avec mon autoloader de classes.
J'ai une mon architecture comme ceci
Dans mon controller frontal j'ai ce code :
1 2 3 4 | // /index.php require('core/Autoloader.php'); Autoloader::registerAutoloader(); $db = new Database('localhost', 'php', 'root'); |
Ensuite dans mon Autoloader :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // /core/Autoload.php <?php class Autoloader { public static function registerAutoloader() { spl_autoload_register([__CLASS__, 'autoloadCoreClass']); } private static function autoloadCoreClass($className) { var_dump($className); require(__DIR__ . DIRECTORY_SEPARATOR . $className . '.php'); } } |
quand j'atterrie sur mon controller frontal, en voici l'erreur retourné :
1 2 3 4 5 6 | <!-- /index.php --> <!-- Le var_dump : --> C:\wamp\www\php\core\Autoloader.php:12:string 'Database' (length=8) Fatal error: Class 'Database' not found in C:\wamp\www\php\index.php on line 4 |
J'ai donc essayé d'aller require le fichier Database.php en considérant que je me situé dans index.php mais l'erreur persiste. (en rajoutant " 'core' . DIRECTORY_SEPARATOR " dans l'autoloader)
Ainsi je ne parviens pas à charger mes classes situé dans "core/"
Cependant en rajoutant un "use" avec le namespace correspondant dans index.php ela fonctionne, mais du coup si je dois faire cela à chaque nouvel appel d'une classe l'autoloader est quasiment inutile.
J'aimerais comprendre svp le problème qui se présente à moi. Cela fait maintenant 2 jours que je suis dessus.. Pas moyen de charger dynamiquement mes classes.
Si vous pouviez me mettre sur une piste ?
Merci et bonne soirée!