9
votes

Classe PHP non trouvée

J'ai résolu cette question à moi. Le nom de fichier était faux lolz.

Bonjour tout le monde!

Je construis un CMS comme Drupal et Joomla. Je travaille sur la fonction de module (plugins) et j'ai eu l'erreur suivante: xxx

voici mon code:

start.php < / p> xxx

paramètres.php xxx

core.php xxx

view.php xxx

start.php est évidemment exécuté en premier. Les autres pages ne sont pas exécutées avant cela, sauf les douanes .php contenant des informations de base de données. Si j'utilisais $ _Server ["db_prefix"] dans mon code ci-dessus, c'est parce que j'avais besoin d'un superglobal qui est défini dans la douane.php:

douanetings.php xxx

Quelqu'un peut-il m'aider? Il semble que la fonction d'indice de vue.php est appelée avant les paramètres.php est incluse. Désolé si cette question est énorme, je veux juste être claire. Je ne dis pas non plus Eval (), je sais.

Donc, je veux savoir pourquoi la classe de réglages n'a pas pu être trouvée. Si vous avez besoin de plus de code source, veuillez commenter cette question.


1 commentaires

Stupide tel qu'il est, j'ai également eu une question de dénomination. Oublié le .php.


5 Réponses :


32
votes

Bien que vous attendiez des paramètres.php à être disponibles pour voir.php car il a été inclus dans un script qui les inclut les deux, j'ai constaté que cela n'était généralement pas le cas. Vous avez quelques choix:

  • require_once Tous les fichiers chacun Les besoins de la classe dans chaque fichier de classe
  • Écrivez un __ autoload () fonction de sorte que PHP puisse trouver toutes vos classes chaque fois que cela le pense besoin d'un

    La 2e option est plus flexible.

    Si vous souhaitez connaître des cours sont disponibles à partir d'un endroit particulier, essayez la sortie get_declared_classes ()


3 commentaires

Désolé, même y compris les paramètres.php dans la vue.php ne fonctionne pas: s


Je sais ce que j'ai mal fait. Mon nom de fichier est faux. Lolz


+1 pour print_r (get_declared_classes ()) Suggestion



4
votes

Juste au cas où quelqu'un trébuche sur cette question, j'ai également eu ce problème et je l'ai résolu en veillant à ce que le nom du fichier PHP était identique au nom de la classe PHP à l'intérieur du fichier actuel.

idiot, je sais.


2 commentaires

Le nom du fichier ne comporte pas nécessairement. Cela pourrait dépendre de votre autochargeur.


hmm bizarre. Merci de me le faire savoir. Je suis certain que cela résolue le problème pour moi, dans tous les cas. J'utilisais Eclipse avec les paramètres par défaut.



0
votes

Il y a un autre problème qui peut se produire et cela vaut la peine de le savoir. Si vous utilisez __AutoLoad () et dans le fichier qui détient la charge de la charge de la société, vous écrivez incorrectement vos balises PHP, il renvoie une erreur de classe non trouvée:

fichier app.php p> xxx pré >

fichier index.php p> xxx pré>

Le code ci-dessus ne fonctionne pas. Pour qu'il fonctionne, vous devez remplacer l'ouverture courte PHP Tag APPL.php avec un long: P>

<?php

class App extends something
{
    function __construct()
    {

    }
}
?>


0 commentaires

9
votes

Ce qui suit n'appre pas dans le cas de OP mais pourrait aider les autres.

Vérifiez si votre code utilise des balises courtes au lieu de et si oui, vérifiez votre php.ini pour short_open_tag Réglage.

Par défaut, il est désactivé mais si vous héritez votre installation PHP de quelqu'un d'autre ...


1 commentaires

Cela peut arriver très facilement si vous passez à un nouveau serveur où le fichier php.ini a probablement des paramètres différents - Great Catch @konstantin.



0
votes

J'ai eu le même problème. Parfois, c'est un problème avec le chemin.

au lieu de: xxx

Essayez: xxx


0 commentaires