¿Alguien sabe qué puede causar este problema?
Error fatal de PHP: no se puede volver a declarar la clase
php
class
fatal-error
Jin Yong
fuente
fuente
if(!class_exists('YourClass')){ include 'YourClass.php'; }
Respuestas:
Significa que ya has creado una clase.
Por ejemplo:
Ese segundo Foo arrojaría el error.
fuente
Tiene una clase del mismo nombre declarada más de una vez. Tal vez a través de múltiples incluye. Al incluir otros archivos, debe usar algo como
para prevenir inclusiones múltiples. Es muy fácil que esto suceda, aunque no siempre es obvio, ya que podría tener una larga cadena de archivos incluidos entre sí.
fuente
Eso sucede cuando declaras una clase más de una vez en una página. Puede arreglarlo envolviendo esa clase con una declaración if (como a continuación), o puede ponerlo en un archivo separado y usarlo
require_once()
, en lugar deinclude()
.fuente
class_exists('TestClass') === false
o!class_exists('TestClass')
Uso
include_once();
: con esto, sus códigos se incluirán solo una vez.fuente
Esto sucederá si usamos cualquiera de las clases integradas en la biblioteca php. Usé el nombre de la clase como Directorio y obtuve el mismo error. Si obtiene un error primero, asegúrese de que el nombre de la clase que usa no sea una de las clases integradas.
fuente
Este error también puede ocurrir si define el
__construct
método más de una vez.fuente
A veces eso sucede debido a algunos errores en FastCGI de PHP.
Intenta reiniciarlo. En Ubuntu es:
fuente
Tuve el mismo problema mientras usaba lo
autoload
siguiente:y en otra clase hubo:
La solución es mantener la compatibilidad del espacio de nombres, en mi ejemplo
namespace testClassNamespace;
en ambos archivos.fuente
Solo agregando;
Este error también puede ocurrir si por error coloca una función dentro de otra función.
fuente
PHP 5.3 (y creo que las versiones anteriores también) parece tener problemas con el mismo nombre en diferentes casos. Así que tuve este problema cuando tuve la clase Login y la interfaz que implementa LogIn. Después de cambiar el nombre de LogIn por Log_In, el problema se resolvió.
fuente
Simplemente haga una cosa cada vez que incluya o requiera un nombre de archivo, es decir, class.login.php. Puedes incluirlo de esta manera:
De esta manera nunca arroja un error.
fuente
Esta función imprimirá una pila diciéndole de dónde se llamó:
Llame a esta función en la parte superior del archivo que incluye su clase.
A veces solo se imprimirá una vez, aunque su clase se incluya dos o más veces. Esto se debe a que PHP en realidad analiza todas las clases de nivel superior en un archivo antes de ejecutar cualquier código y arroja el error fatal de inmediato. Para remediar esto, envuelva su declaración de clase en
if(true) { ... }
, lo que hará que su clase baje un nivel de alcance. Entonces debería obtener sus dos rastros antes de los errores fatales de PHP.Esto debería ayudarlo a encontrar dónde se incluye su clase varias veces en un proyecto complejo.
fuente
¿Usó Zend Framework? Yo también tengo el mismo problema.
Lo resolví comentando esto en la siguiente línea
config/application.ini
:Espero que esto ayude.
fuente
Otro posible culpable es el control de la fuente y los conflictos no resueltos. SVN puede hacer que la misma clase aparezca dos veces en el archivo de código en conflicto; dos versiones alternativas de la misma ("mía" y "suya").
fuente
Me he encontrado con el mismo problema: la versión más nueva de php no trata lo mismo con múltiples inclusiones del mismo archivo (como una biblioteca), por lo que ahora tengo que cambiar toda mi inclusión por alguna include_once.
O estos trucos podrían ayudar, si no tienes demasiada clase en tu biblioteca ...
fuente
Tuve el mismo problema "Error fatal de PHP: no se puede volver a declarar la clase XYZ.php".
Tengo dos directorios como
controller
ymodel
y cargué por error XYZ.php en ambos directorios (por lo que el archivo con el mismo nombre causa el problema).Primera solución
Busque en todo su proyecto y asegúrese de tener solo una clase XYZ.php.
Segunda solución:
Agregue un espacio de nombres en su clase para que pueda usar el mismo nombre de clase.
fuente
Me he encontrado con ese mismo problema. descubrí que el caso era el nombre de la clase. Lo solucioné cambiando el nombre. por lo tanto resolviendo el problema.
fuente
En realidad, significa que la clase ya está declarada en la página y está intentando recrearla.
Una técnica simple es la siguiente.
Resolví el problema con lo siguiente. Espero que esto te ayude un poco.
fuente