Bonjour,
Je rencontre un problème dont je n'arrive pas à sortir. J'en suis à la partie où l'on doit tester le bon fonctionnement des différents éléments (index, includes, Dispatcher) et avoir un echo "lol" à l'écran. Dans mon cas je reçois une erreur :
Fatal error : Class 'Dispatcher' not found in /Library/WebServer/Documents/Tuto/Site/webroot/index.php on line 9
J'ai tout bien vérifié, j'ai même utilisé les fichiers sources et j'ai toujours la même erreur.
Quelqu'un a-t-il déjà rencontré ce problème ou aurait une solution à me proposer ?
Merci

15 réponses


hatfab
Auteur
Réponse acceptée

Bon, c'est une histoire de fou : j'ai jeté les 2 fichiers "includes.php" et "Dispatcher.php", je les ai recréés, j'ai retapé le code et là tout fonctionne ! En tout cas merci de ton aide !

Salut,
es-tu fait l'include de ton fichier Dispatcher.php ?

hatfab
Auteur

Oui j'ai ça

<?php
require 'Dispatcher.php';

dans includes.php

hatfab
Auteur

et ça

<?php
class Dispatcher{

    function __construct(){
        echo'lol';
    }

}

dans Dispatcher.php

et de quoi contient le fichier index.php ?

hatfab
Auteur

Et donc ça

<?php
define('WEBROOT',dirname( __FILE__ ));
define('ROOT',dirname(WEBROOT));
define('DS',DIRECTORY_SEPARATOR);
define('CORE',ROOT.DS.'core');
define('BASE_URL',dirname(dirname($_SERVER'SCRIPT_NAME'])));
require CORE.DS.'includes.php';
new Dispatcher();
?>

dans l'index

c'est vraiment une chose bizarre,
est-ce que les fichiers includes.php et Dispatcher.php se sont au même niveau ?

hatfab
Auteur

Oui, ils sont tous dans le dossier "core"
Étrange !

essayes de supprimer Dispatcher.php et ses includes. et dans ton index.php tu mets le code de ton Dispatcher avant le new Dispatcher()

hatfab
Auteur

Oui, comme ça ça fonctionne, j'ai bien "lol" qui s'affiche.

<?php
define('WEBROOT',dirname( __FILE__ ));
define('ROOT',dirname(WEBROOT));
define('DS',DIRECTORY_SEPARATOR);
define('CORE',ROOT.DS.'core');
define('BASE_URL',dirname(dirname($_SERVER'SCRIPT_NAME'])));
// require CORE.DS.'includes.php';
class Dispatcher{

    function __construct(){
        echo'lol';
    }

}
new Dispatcher();
?>

donc le problème vient surement de la part des includes.
tu peux montrer la structure de tes fichiers ?

hatfab
Auteur

La structure c'est le contenu ?
includes.php :

<?php
require 'Dispatcher.php';

Dispatcher.php :

<?php
class Dispatcher{
    function __construct(){
        echo'lol';
    }
}

index.php :

<?php
define('WEBROOT',dirname( __FILE__ ));
define('ROOT',dirname(WEBROOT));
define('DS',DIRECTORY_SEPARATOR);
define('CORE',ROOT.DS.'core');
define('BASE_URL',dirname(dirname($_SERVER'SCRIPT_NAME'])));
// require CORE.DS.'includes.php';
class Dispatcher{

    function __construct(){
        echo'lol';
    }

}
new Dispatcher();
?>

tout ça dans /site/core(includes, Dispatcher) et dans site/webroot(index)

Bonsoir,

Je me permets de venir publier ici pour ne pas encombrer le reste du forum avec un sujet identique car je suis bloqué avec exactement le même problème!

J'ai beau effacer les fichiers et recommencer, retaper le code,etc... je n'arrive pas à m'en sortir avec ce problème d'includes.

Donc c'est pour savoir si des fois vous auriez des conseils où d'autres choses à me faire essayer...
(J'ai même fini par copier le code de ce sujet, sans succès!)

Je dispose de la même arborescence de fichiers, du même code, j’éteins et rallume Wamp, rien n'y fait!

Et le Apache_error.log me dis:

[Mon Oct 29 21:50:41 2012] [error] [client 127.0.0.1] PHP Fatal error: Class 'Dispatcher' not found in C:\\Program Files\\wamp\\www\\MonSite\\webroot\\index.php on line 18
[Mon Oct 29 21:50:41 2012] [error] [client 127.0.0.1] PHP Stack trace:
[Mon Oct 29 21:50:41 2012] [error] [client 127.0.0.1] PHP 1. {main}() C:\\Program Files\\wamp\\www\\MonSite\\webroot\\index.php:0

En tout cas merci d'avance de votre aide.

Benj

hatfab
Auteur

Bonsoir,
Je ne saurais t'aider plus que ça parce que je n'ai jamais trouvé l'erreur. Le système s'est mis à fonctionner après que j'ai jeter et recréé les fichiers "includes.php" et "Dispatcher.php".
Désolé, j'espère que tu vas trouver.

Bonjour,

Oh miracle, oh grand dieu j'ai recommencé, ça a marché!... Je ne vais pas chercher a comprendre je risque un bon mal de crâne!

Merci pour ta réponse et bonne continuation! =)