Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

PHP OO problema con clase redeclarada.

Estas en el tema de problema con clase redeclarada. en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola a todos, Resulta que tengo un problemilla con una clase y no se como resolverlo. Yo tengo algo como esto: claseConectarBd claseVerClientes -include claseConectarBd ...
  #1 (permalink)  
Antiguo 23/03/2011, 02:18
 
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 14 años, 10 meses
Puntos: 0
problema con clase redeclarada.

Hola a todos,

Resulta que tengo un problemilla con una clase y no se como resolverlo. Yo tengo algo como esto:

claseConectarBd

claseVerClientes
-include claseConectarBd

claseVerObjetos
-include claseConectarBd


Como veis utilizo la misma clase para conectarme a la bbdd. El problema me viene porque tengo una funcion que llama a la vez a la claseVerClientes y la claseVerObjetos para crear una tabla con todos los datos y la claseConectarBd me da error al intentarla declarar dos veces.
He intentado usar algo como class_exits() pero no funciona o no se cómo usarlo pero sigo teniendo el mismo error.
¿Alguna idea?

Gracias.
  #2 (permalink)  
Antiguo 23/03/2011, 05:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problema con clase redeclarada.

Usa namespace http://php.net/manual/en/language.namespaces.php
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 23/03/2011, 07:50
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años
Puntos: 60
Respuesta: problema con clase redeclarada.

O sencillamente usa

Código PHP:
require_once 'clase.php'
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #4 (permalink)  
Antiguo 23/03/2011, 08:03
pur
 
Fecha de Ingreso: agosto-2007
Mensajes: 98
Antigüedad: 16 años, 8 meses
Puntos: 4
Respuesta: problema con clase redeclarada.

Eso pasa por poner includes dentro de las clases.
  #5 (permalink)  
Antiguo 23/03/2011, 14:45
 
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: problema con clase redeclarada.

Cita:
Iniciado por pur Ver Mensaje
Eso pasa por poner includes dentro de las clases.
Bueno, la verdad que llevo poco en esto del PHP y no se otra forma de llamar a una clase desde otra a no ser por el include, ¿hay alguna otra manera?

Lo de los namespace tiene mejor pinta pero no se si me entero muy bien, estoy en ello ;)
  #6 (permalink)  
Antiguo 23/03/2011, 15:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: problema con clase redeclarada.

Ya te dijo _ssx, usa require_once para evitar ese problema.

Saludos.
  #7 (permalink)  
Antiguo 23/03/2011, 20:23
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años
Puntos: 1517
Respuesta: problema con clase redeclarada.

Si quieres llamar el mismo método con el mismo contenido haz lo que te indicaron de usar require_once, si tienes un método que tiene el mismo nombre pero con otro contenido usa namespace.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 25/03/2011, 15:27
 
Fecha de Ingreso: junio-2009
Mensajes: 5
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: problema con clase redeclarada.

Bueno, gracias a todos, lo conseguí por otros medios.

Resulta que el problema realmente era el siguiente. Lo que estoy haciendo es un calendario con eventos. Esos eventos se cogen de la db y el problema era que el titulo de cada evento se forma a partir de de datos de otras tablas. Así que el diagrama es más o menos:

Evento (objeto evento)
-include_once ("connect.class.php") //conectamos a la db
-datos del evento //sacamos los datos
-titulo del evento
- nombre usuario (objeto usuario)
-include_once ("connect.class.php") //AQUI ESTÁ EL PROBLEMA, ya que volvemos a conectar a la db.
-datos del usuario


Así que el problema era que estaba intentando crear la clase 'connect' otra vez. Creo que al estar el objeto usuario dentro del objeto evento, la función include_once no detectaba que ya lo había abierto anteriormente y lo hacía de nuevo.

Al final lo he solucionado detectando si existe la clase, no el archivo del include, por el patrón Singleton:

[URL="http://www.talkphp.com/advanced-php-programming/1304-how-use-singleton-design-pattern.html"]http://www.talkphp.com/advanced-php-programming/1304-how-use-singleton-design-pattern.html[/URL]

No se si lo podría haber solucionado por los namespace pero la verdad que no me he llegado a enterar bien como funcionan :(, tendré que seguir investigando.

Gracias!!
  #9 (permalink)  
Antiguo 11/10/2012, 18:51
 
Fecha de Ingreso: octubre-2012
Mensajes: 1
Antigüedad: 11 años, 6 meses
Puntos: 1
Respuesta: problema con clase redeclarada.

Mismo problema lo solucione usando require_once 'clase.php';

Etiquetas: clase
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:42.