Bonjour, j'aimerais un petit coup de main je comprends vraiment pas mon erreur. J'essaie d'autoloader mes classes en php. Voici l'arboressence de mon code :
Dans le index.php je fais cela :
Toutes mes classes sont dans le dossier app. J'utilise les namespace comme ceci: Si une classe se situe à la racine du dossier app je fais :
Et si elle se situe dans le dossier app/table je fais :
Cependant, j'ai une erreur lorsque je compile, il cherche une classe App.php dans le namespace App\Table :
Voici le code de mon autoloader :
En plus je comprends pas pourquoi il va essayer de charger la classe App\Table\App alors qu'elle existe pas... Le echo de l'autoloader affiche ça :
Et j'ai bien vérifié tous mes namespaces sont comme je l'ai précisé plus haut, toutes les classes ont le bon nom etc... Voilà si quelqu'un peut prendre un temps pour essayer de comprendre et m'expliquer car là je bloque ... Merci !!
Déjà ton code va planter sur Unixoïde, la casse n'est pas respectée (app vs App, table vs Table).
Il faudrait voir tes instanciations (+ use + namespace courant), c'est peut être tout simplement eux qui sont faux.
D'ailleurs, pourquoi ne pas simplement écrire : require __DIR__. '/../' . str_replace('\\', '/', $class) . '.php'; dans l'autoload ? Il n'y a pas besoin de strpos ni ces str_replace.
PS : / est portable, pas la peine de se casser le tronc à chercher à utiliser autre chose (\ sous Windows)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli