Dans le fichier Autoloader.php dans ton dossier app/ , le namespace est bien "app" ?
Bonjour,
Actuellement à l'étape de Refactoring sur le tutoriel POO en PHP, je suis confronté à un problème d'appel sur les autoloader.
Conscient que d'autres sujets existent, j'aimerais comprendre pourquoi j'obtiens une erreur.
Mon arborescence a bien été reporté comme sur tutoriel
/Blog/app
/Blog/core
J'ai bien un Autoloader dans app avec le namespace App et un Autoloader dans core avec le namespace Core
Dans le fichier index.php, j'ai le code suivant :
Pourtant le code part en erreur et j'obtiens le message suivant :
( ! ) Warning: require(C:\wamp\www\Blog\app/app/Table/ArticlesTable.php): failed to open stream: No such file or directory in C:\wamp\www\Blog\app\Autoloader.php on line 14
( ! ) Fatal error: require(): Failed opening required 'C:\wamp\www\Blog\app/app/Table/ArticlesTable.php' (include_path='.;C:\php\pear') in C:\wamp\www\Blog\app\Autoloader.php on line 14
Je n'arrive pas a comprendre mon erreur, une petite idée ?
Merci d'avance.
17 réponses
Bonjour
Oui en effet, voici le code de mon Autoloader :
Bonsoir,
Il y a un dossier app de trop apparemment.
On peut avoir ton fichier app ?
Le voila :
Je sèche la
Si besoin je peux mettre mon code a disposition sur une archive mais je séche aussi et ça m'embéte car j'ai un peu avancé dans la video et je ne peux continuer avec cette erreur :(
Tu as fini la vidéo refactoring ?
Non pas encore, je me suis fixé d'avoir le meme rendu a chaque fois qu'il en a un sur la vidéo, du coup je bloque a 7min40
Avance un peu car je suis en train de refaire cette formation et il me semble avec eu le même soucis.
J'ai avancé jusqu'a 24min et rien de plus, je tenterai de la finir et je reviendrais sur le sujet, merci d'avoir jeter un coup d'oeil ^^
Yop. Il faut y mettre un triple égal à ta condition if(strpos($class, __NAMESPACE__ . '\\') == 0) { dans ton fichier Autoloader.php. Effectivement car strpos peut retourner false (et == 0 équivaut à == false (car pas de comparaison sur les types en cas de double égal ^^))
Ah merci PhiSyX, en effet je n'avais que deux égals sur trois, il m'affiche une nouvelle erreur, je vais fouiller un peu et vous tiens au courant, merci encore.
Bon du coup je recommence à sécher sur une autre erreur :
Ma variable $class_name , est bien égale a \app\Table\ArticleTable, le fichier ArticleTable.php posséde bien la classe en extends sur la class du fichier Table.php situé dans core/Table, donc il ne devrait y avoir aucun problème sur l'appel
Quel est le nouveau message d'erreur? ^^
Le fichier ArticleTable.php a-t-il namespace App\Table en début de fichier ?
J'ai procédé a un renommage de ma table article en posts ainsi que l'appel aux class et nom de fichier.
La nouvelle erreur est :
Fatal error: Class '\app\Table\PostTable' not found in C:\wamp\www\Blog\app\App.php on line 29
Mon fichier PostTable.php (ancien ArticleTable.php) a bien le namespace App\Table.
Essaye avec un A majuscule à \\app (méthode getTable).
C'est ignoble de savoir que dans la vidéo, il y a bien une majuscule, je me suis pourtant arréter a toutes les classes mais enfin c'est réglé grâce à toi, merci
Ps : en renommant les quelques derniers trucs, j'ai de nouveau un affichage fonctionnel, je peux enfin continuer, merci encore pour ton aide