Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

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

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

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

7 réponses


Huggy
Réponse acceptée

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 ?

kassa
Auteur

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

kassa
Auteur

J'ai egalement créé un autoloader qui se trouve dans le namespace Tutoriel

Peux-tu nous monter ton autoloader ?

kassa
Auteur
<?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';
        }
    }
}
kassa
Auteur

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