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

Castear Objetos

Estas en el tema de Castear Objetos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. hola.. hace tiempo que no ponía dudas en el foro... La que tengo ahora es la siguiente: tengo las clases peticionesHelper, PeticionesDAO y Peticiones. PeticionesHelper ...
  #1 (permalink)  
Antiguo 14/09/2009, 12:35
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 14 años, 11 meses
Puntos: 0
Exclamación Castear Objetos

hola.. hace tiempo que no ponía dudas en el foro...

La que tengo ahora es la siguiente:

tengo las clases peticionesHelper, PeticionesDAO y Peticiones.

PeticionesHelper crea tantas PeticionDAO como registros tenga en mi base de datos (en este caso tengo 2 peticiones) y llena los datos de ellas (IDPeticion nombreUsuario) con los datos de la DB y los voy metiendo en una lista listaPeticiones. Luego de esto tengo:

listaPeticiones[0] = PeticionDAO. (datos 1)
listaPeticiones[1] = PeticionDAO. (datos 2)

y retorno esta lista.

en la clase Peticiones tomo esta misma listaPeticiones y la recorro con un for:

Código PHP:
for($i=0;$i<count(listaPeticines);$i++)
{
   
$peticionDAO listaPeticiones[$i]
   
//???

y ahora quiero imprimir los datos ahí mismo... pero... como podrán darse cuanta, los ojetos PeticionDAO que genero me los guarda en la variable $peticionDAO y trato de hacer lo siguiente donde dice "???"

Código PHP:
echo $peticionDAO->getID(); 
Y me dice que no puedo llamar a esta función porque no existe. y en la clase PeticionDAO si existe tal método.

Yo creo que es porque pierde el tipo de Objeto.

Entonces mi duda es com decirle al PHP que mi variable es de tipo PeticionDAO por algún medio.. inteneté castear y no pude-...

Podrían ayudarme con esto... ??

Es urgente pliss..
.
Gracias de antemano y saludos a todos.

Espero sus respuestas.

Última edición por ishoka; 14/09/2009 a las 12:38 Razón: Faltas de ortografía
  #2 (permalink)  
Antiguo 14/09/2009, 13:06
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 8 meses
Puntos: 55
Respuesta: Castear Objetos

bueno lo q uedes hacer es
Código php:
Ver original
  1. //en los ???
  2. if($peticionDAO instanceof PeticioDAO){
  3. echo $peticionDAO->getID();  
  4. }

tambien puedes averiguar el nombre de la clase q instancia el objeto usando get_class();

__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 14/09/2009, 13:20
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Castear Objetos

Lo probaré cunado llegué a mi casa.. toy en el trabajo y no tengo el código..

Muchas gracias por la ayuda, creo que me servirá...


repito..

Muchas gracias...
  #4 (permalink)  
Antiguo 14/09/2009, 13:48
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: Castear Objetos

También te falta el $ listaPeticiones así no lo va a tomar como variable. También es recomendable usar var_dump () para hacer debug de que datos tiene la variable.

Saludos.
  #5 (permalink)  
Antiguo 14/09/2009, 14:09
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 14 años, 11 meses
Puntos: 0
Si Ok...

Lo que pasa es que este codigo no es copiado desde mi codigo fuete... sino que fue generado a modo de ejemplo, porque es asícomo lo utilizo..

Igualmente me esscuso por la falta del $ en lacitada variable.

Muchas gracias a todos por su aporte...

emiliodeg:

ESPECTACULAR.

Desperdicié 2 días tratando de encontrar la respuesta...

Muchas gracias hombre...


Y muchas gracias a todos.

Última edición por GatorV; 14/09/2009 a las 22:24
  #6 (permalink)  
Antiguo 14/09/2009, 21:26
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 8 meses
Puntos: 55
Respuesta: Castear Objetos

de nada
__________________
Degiovanni Emilio
developtus.com
  #7 (permalink)  
Antiguo 19/09/2009, 06:31
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Castear Objetos

Cita:
Iniciado por emiliodeg Ver Mensaje
bueno lo q uedes hacer es
Código php:
Ver original
  1. //en los ???
  2. if($peticionDAO instanceof PeticioDAO){
  3. echo $peticionDAO->getID();  
  4. }

tambien puedes averiguar el nombre de la clase q instancia el objeto usando get_class();

Cuidado Emilio con esta práctica, rompes el polimorfismo y justo es lo que no deberíamos hacer. Estar preguntando de qué tipo es la instancia nunca es bueno en OO (a menos que estés haciendo algo muy particular, como un generador de código o similar, pero en el 99% de los casos no sirve).

Saludos
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #8 (permalink)  
Antiguo 19/09/2009, 06:33
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años
Puntos: 32
Respuesta: Castear Objetos

Cita:
Iniciado por ishoka Ver Mensaje
hola.. hace tiempo que no ponía dudas en el foro...

La que tengo ahora es la siguiente:

tengo las clases peticionesHelper, PeticionesDAO y Peticiones.

PeticionesHelper crea tantas PeticionDAO como registros tenga en mi base de datos (en este caso tengo 2 peticiones) y llena los datos de ellas (IDPeticion nombreUsuario) con los datos de la DB y los voy metiendo en una lista listaPeticiones. Luego de esto tengo:

listaPeticiones[0] = PeticionDAO. (datos 1)
listaPeticiones[1] = PeticionDAO. (datos 2)

y retorno esta lista.

en la clase Peticiones tomo esta misma listaPeticiones y la recorro con un for:

Código PHP:
for($i=0;$i<count(listaPeticines);$i++)
{
   
$peticionDAO listaPeticiones[$i]
   
//???

y ahora quiero imprimir los datos ahí mismo... pero... como podrán darse cuanta, los ojetos PeticionDAO que genero me los guarda en la variable $peticionDAO y trato de hacer lo siguiente donde dice "???"

Código PHP:
echo $peticionDAO->getID(); 
Y me dice que no puedo llamar a esta función porque no existe. y en la clase PeticionDAO si existe tal método.

Yo creo que es porque pierde el tipo de Objeto.

Entonces mi duda es com decirle al PHP que mi variable es de tipo PeticionDAO por algún medio.. inteneté castear y no pude-...

Podrían ayudarme con esto... ??

Es urgente pliss..
.
Gracias de antemano y saludos a todos.

Espero sus respuestas.
Que tal Ishoka,

Me parece que le estás errando en la carga de los objetos, ya que no veo que necesites ningún casting... realmente estás cargando esos objetos? más de un tipo? puedes imprimir lo que te dice un var_dump o un get_class de cada uno de ellos para saber qué tienes cargado?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
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 21:10.