Merci à Shady Ladow et Alain9034 pour vos réponses, ceci m'a permis de régler mon problème et d'en apprendre encore un peu plus :)
Bonjour,
Voila je rencontre un petit problème avec mon code, je ne comprends pas pourquoi mais il y a un problème avec mon autoload il essaye de charger ceci: "/app/Core/Table/Table.php", alors que je n'ai pas du tout cette aboresence là...
========================
Mes fichiers
(Core/Autoloader.php)
(App/Autoloader.php)
(App/App.php)
Mon erreur
cela fait quelques heures que je bloque dessus :( si vous saviez m'aider ça serait vraiment magnifique ! Merci d'avance :)
4 réponses
Hey ! J'ai eu exactement le même problème et en cherchant sur le forum et en combinant un peu toutes les solutions, j'ai réussi à le résoudre, voici mon code :3
Autoloader de app
Autoloader de core
Voilà, dis moi si ça fonctionne pour toi, je suis pas très douée en PHP donc je sais pas comment t'expliquer ce qui n'allait pas :/
Bonjour,
selon le mesage d'erreur que tu reçois,
(" ! ) Warning: require(/var/www/whitesmoke/public_html/poo_video/Blog/app/Core/Table/Table.php): failed to open stream: No such file or directory in /var/www/whitesmoke/public_html/poo_video/Blog/app/Autoloader.php on line 15 "
Je pense que ton problème vient de ta méthode getTable dans ta class App. En effet tu dois avoir un dossier Tables au sein de ton dossier app qui contient lui aussi un dossier Table et tu n'y fait psa référence dans la méthode
Ta méthode:
public function getTable($name)
{
$class_name = '\App\Table\'.ucfirst($name).'Table';
return new $class_name($this->getDb());
}
Correction
public function getTable($name){
$class_name = '\App\Tables\Table\' . ucfirst($name) . 'Table';
return new $class_name($this->getDb());
}
De plus évite les == et remplace les par ===. C'est une vérification stricte plus poussée
Ton code
if(strpos($class_name, __NAMESPACE__.'\\') == 0)
Correction
if(strpos($class_name, __NAMESPACE__.'\\') === 0)
N'hésites pas si tu as besoin
cordialement
Bonjour.
Il y a une chose que je ne comprend pas, pourquoi faire deux autoloader dans la même application ?
Un seul devrait suffire.