Bonjour,
Voila je rencontre un petit problème avec mon code.
je suis entrain de suivre le tuto de la POO et je suis arrivé au niveau des namespaces mais je n'arrive pas à charger la classe BootstrapForm.php
Décrivez ici votre code ou ce que vous cherchez à faire
J'ai instancié la classe BootstrapForm.php dans le fichier index.php à la ligne 23
Entourez votre code pour bien le mettre en forme
Décrivez ici ce que vous cherchez à obtenir
Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
Voila l'erreur Fatal error: Uncaught Error: Class 'Tutoriel\HTML\BootstrapForm' not found in C:\xampp\htdocs\Sites\POO_GK\index.php:23 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Sites\POO_GK\index.php on line 23
un autoloader c'est fait pour charger une classe
si tu mets ton autoloader dans une classe et dans un namespace tu te compliques la vie (qui de la poule ou de l'oeuf ..)
si tu comptes utiliser des bibliothèques externes, le mieux est d'utiliser l'autoloader de composer.
Tu as un blème dans ton autoloader
if (strpos($class, __NAMESPACE__. '\\' === 0)){
if (strpos($class, __NAMESPACE__. '\\' ) === 0) {
L'erreur parle d'elle-même, il n'arrive pas à trouver ton fichier BootstrapForm, est-ce qu'il est dans un namespace ? Si oui l'as-tu importé et as-tu crée un autoloader ?
Oui il se se trouve dans le namespace Tutoriel\HTML cette classe etend la classe Form. Juste au debut du fichier index.php j'ai dit que je veux utililiser le namespace Tutoriel\HTML
<?php
namespace Tutoriel;
class Autoloader{
static function register(){
spl_autoload_register(array(__CLASS__,'autoload'));
}
static function autoload($class){
if (strpos($class, __NAMESPACE__. '\\' === 0)){
$class = str_replace(__NAMESPACE__.'\\', '',$class);
$class = str_replace('\\', '/',$class);
require 'class/'.$class.'.php';
}
}
}
Je compte bien utiliser des librairies externes mais comme je suis debutant en POO donc voila. Et tu a raison le probleme c'etait avec le if.
Probleme résolu ! Un grand merci à vous tous d'avoir pris le temps repondre