Class not found

Fermé
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 - 13 juin 2009 à 14:26
 le père - 14 juin 2009 à 22:44
Bonjour,
Je poste dans le forum à cause d'une erreur que je trouve vraiment illogique.
Voici mes codes.

membres.php

<?php
[...]
//inclusion de classe
include('modeles/membres/classes/membre.class.php');

//inclusion du controleur principal 
include('controleurs/membres_controleur.php');

[...]
?>



membre.class.php

<?php
class Membre
{
     public function __construct()
     {
          [...]
     }

     public function inscription()
     {
          [...]
     }
}
?>


membres_controleur.php

<?php
$membre = new Membre();
$membre->inscription();
?>



Et ce code tout bête qui devrait (il me semble) fonctionner parfaitement, m'affiche l'erreur Fatal error: Class 'Membre' not found in C:\...\controleurs\membres_controleur.php on line 2 ... Alors que la classe a été inclue juste avant le contrôleur qui appelle la classe !

Pourquoi cette erreur est-elle affichée ?
Je me creuse la tête mais ne parviens pas à trouver mon erreur ...
Merci d'avance pour votre aide,
christophetd

3 réponses

Bonjour

Je viens de faire l'essai, ça marche chez moi. Donc tu as raison, ça doit fonctionner.
Peux-tu rajouter une erreur volontaire (genre $x=;) dans membre.class.php, juste avant le définition de Membre pour vérifier que tu y passes bien ?
0
darkchristophetd Messages postés 1100 Date d'inscription mardi 26 février 2008 Statut Contributeur Dernière intervention 14 novembre 2010 459
13 juin 2009 à 22:17
Je n'ai pas fait ça, mais en faisant un echo 'XXX', ça n'affiche rien.
Bizarre non ?
0
Il ne fallait pas faire le test avec un echo.
En effet, le PHP est interpreté en 2 passes. L'echo n'est exécuté qu'à la deuxième passe, alors que ton erreur de classe non déclarée est détectée dès la première passe. Donc avant l'éxécution de l'echo même si celui-ci est placé avant.
C'est pour ça que je t'avais dit de provoquer une erreur qui est détectée dès la première passe.
0