Quelqu'un sait-il ce qui peut causer ce problème?
Erreur fatale PHP: impossible de redéclarer la classe
php
class
fatal-error
Jin Yong
la source
la source
if(!class_exists('YourClass')){ include 'YourClass.php'; }
Réponses:
Cela signifie que vous avez déjà créé une classe.
Par exemple:
Ce deuxième Foo lèverait l'erreur.
la source
Vous avez une classe du même nom déclarée plus d'une fois. Peut-être via plusieurs comprend. Lorsque vous incluez d'autres fichiers, vous devez utiliser quelque chose comme
pour éviter les inclusions multiples. C'est très facile, mais pas toujours évident, car vous pourriez avoir une longue chaîne de fichiers inclus les uns par les autres.
la source
Cela se produit lorsque vous déclarez une classe plus d'une fois dans une page. Vous pouvez le corriger en enveloppant cette classe avec une instruction if (comme ci-dessous), ou vous pouvez la placer dans un fichier séparé et utiliser
require_once()
, au lieu deinclude()
.la source
class_exists('TestClass') === false
ou!class_exists('TestClass')
Utilisation
include_once();
- avec cela, vos codes ne seront inclus qu'une seule fois.la source
Cela se produira si nous utilisons l'une des classes intégrées de la bibliothèque php. J'ai utilisé le nom de la classe comme Répertoire et j'ai eu la même erreur. Si vous obtenez une erreur, assurez-vous d'abord que le nom de classe que vous utilisez ne fait pas partie des classes intégrées.
la source
Cette erreur peut également se produire si vous définissez la
__construct
méthode plusieurs fois.la source
Cela arrive parfois à cause de quelques bogues dans FastCGI de PHP.
Essayez de le redémarrer. Chez Ubuntu, c'est:
la source
J'ai eu le même problème en utilisant
autoload
comme suit:et dans une autre classe il y avait:
La solution est de garder la compatibilité des espaces de noms, dans mon exemple
namespace testClassNamespace;
dans les deux fichiers.la source
Juste ajouter;
Cette erreur peut également se produire si vous placez par erreur une fonction dans une autre fonction.
la source
PHP 5.3 (une version plus ancienne je pense aussi) semble avoir un problème avec le même nom dans différents cas. J'ai donc eu ce problème quand a eu la classe Login et l'interface qu'elle implémente LogIn. Après avoir renommé LogIn en Log_In, le problème a été résolu.
la source
Faites juste une chose chaque fois que vous incluez ou exigez un nom de fichier, à savoir class.login.php. Vous pouvez l'inclure de cette façon:
De cette façon, il ne génère jamais d'erreur.
la source
Cette fonction imprimera une pile vous indiquant d'où elle a été appelée:
Appelez cette fonction en haut du fichier qui inclut votre classe.
Parfois, il ne s'imprimera qu'une seule fois, même si votre classe est incluse deux fois ou plus. C'est parce que PHP analyse en fait toutes les classes de niveau supérieur dans un fichier avant d'exécuter du code et lève immédiatement l'erreur fatale. Pour remédier à cela, enveloppez votre déclaration de classe
if(true) { ... }
, ce qui fera descendre votre classe d'un niveau de portée. Ensuite, vous devriez obtenir vos deux traces avant les erreurs fatales PHP.Cela devrait vous aider à trouver où votre classe est incluse à plusieurs reprises dans un projet complexe.
la source
Avez-vous utilisé Zend Framework? J'ai le même probléme.
Je l'ai résolu en commentant ceci la ligne suivante dans
config/application.ini
:J'espère que cela t'aidera.
la source
Un autre coupable possible est le contrôle de la source et les conflits non résolus. SVN peut faire apparaître la même classe deux fois dans le fichier de code en conflit; deux versions alternatives de celui-ci («la mienne» et «la leur»).
la source
J'ai rencontré le même problème: la nouvelle version de php ne traite pas la même chose avec plusieurs inclusions du même fichier (en tant que bibliothèque), donc maintenant je dois changer tout mon include par certains include_once.
Ou cette astuce pourrait vous aider, si vous n'avez pas trop de cours dans votre bibliothèque ...
la source
J'ai eu le même problème "Erreur fatale PHP: Impossible de redéclarer la classe XYZ.php".
J'ai deux répertoires comme
controller
etmodel
et j'ai téléchargé par erreur XYZ.php dans les deux répertoires (donc un fichier avec le même nom cause le problème).Première solution:
Trouvez dans l'ensemble de votre projet et assurez-vous que vous n'avez qu'une seule classe XYZ.php.
Deuxième solution:
Ajoutez un espace de noms dans votre classe pour pouvoir utiliser le même nom de classe.
la source
j'ai rencontré le même problème. découvert que le cas était le nom de la classe. je l'ai traité en changeant le nom. résolvant ainsi le problème.
la source
Cela signifie en fait que la classe est déjà déclarée dans la page et que vous essayez de la recréer.
Une technique simple est la suivante.
J'ai résolu le problème avec ce qui suit. J'espère que cela vous aidera un peu.
la source