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

Retornar valores.. Objeto o Array?

Estas en el tema de Retornar valores.. Objeto o Array? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buen dia. Esta duda la tuve hace mucho ya, pero recien ahora me pongo a pensar serio cual es la diferencia, y quiero consultarles a ...
  #1 (permalink)  
Antiguo 21/05/2011, 16:55
 
Fecha de Ingreso: marzo-2010
Mensajes: 71
Antigüedad: 14 años
Puntos: 24
Retornar valores.. Objeto o Array?

Buen dia.

Esta duda la tuve hace mucho ya, pero recien ahora me pongo a pensar serio cual es la diferencia, y quiero consultarles a ver como es que se manejan ustedes.

La cosa es que en los frameworks con los que trabaje, al retornar datos siempre te da la opcion, traerlos como objeto, o como array.

Si los datos de la db son para usarlos directamente(sin setter y getters), es mejor traerlo como array verdad?
Asi no tienes la posibilidad de dar un error al querer usar un atributo privado. (me paso hoy con Doctrine)

Despues de eso, que otra diferencia hay??

Hasta ahora siempre que traje datos de la db los utilize como objetos(me parece mas comodo la sintaxis), pero creo que tengo que empezar a cambiar.

Saludos
  #2 (permalink)  
Antiguo 21/05/2011, 16:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Retornar valores.. Objeto o Array?

Yo creo lo mejor es traer arreglos de objetos, con entidades que tengan setters/getters, así te aseguras que estas usando objetos con reglas establecidas por tu capa del modelo y no solo los datos abstractos.

Saludos.
  #3 (permalink)  
Antiguo 21/05/2011, 17:06
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 2 meses
Puntos: 845
Respuesta: Retornar valores.. Objeto o Array?

Yo creo que depende, si los datos son para presentación en una vista y no interviene lógica alguna, no veo la necesidad de hydratar objetos, esto es una recomendación de Doctrine, y personalmente lo tengo como rule of thumb.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 22/05/2011, 07:26
 
Fecha de Ingreso: marzo-2010
Mensajes: 71
Antigüedad: 14 años
Puntos: 24
Respuesta: Retornar valores.. Objeto o Array?

uhmm.. gracias por responder!

Al termino de hidratar objetos no lo tenia claro. Por lo que entendi es que un objeto hidratado pertenece a una clase existente, mientras que si no esta hidrato es un objeto comun stdClass, entendi bien?

Entonces con la hidratacion nos quedan 3 opciones, objeto hidratado, objeto y array.

Como bien dice GatorV, con un objeto hidratado te aseguras que estas usando objetos con reglas establecidas por tu capa del modelo. Aunque si los getters no tienen logica, creo que es lo mismo que usar un objeto comun, hay que ver que usar dependiendo de la situacion.

Despues entre objeto sin hidratar y array no hay ninguna diferencia? solo la sintaxis?

Perdonen que consulte tanto, es que quiero tenerlo claro para no molestar mas

Pd.: masterpuppet, para traer objetos con doctrine 2 sin hidratar se hace definiendo todos los campos de la consulta con DQL no?

Gracias
  #5 (permalink)  
Antiguo 22/05/2011, 08:09
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 2 meses
Puntos: 845
Respuesta: Retornar valores.. Objeto o Array?

A ver, estas confundido, Hydrate es el proceso de transformar una instancia de Doctrine_Query en un set de datos, ya sea un grafo de objetos o un array que represente el grafo.

Hay varios tipos de data hydrators, los mas utilizados son:
  1. HYDRATE_OBJECT
  2. HYDRATE_ARRAY
  3. HYDRATE_SCALAR
  4. HYDRATE_SINGLE_SCLALAR

El tipo por defecto es HYDRATE_OBJECT, este carga los datos con modelos/clases existentes, con el costo que esto tiene, hay que instanciar y setear datos, es por esto la recomendación de utilizar HYDRATE_ARRAY cuando no haya lógica alguna, por ejemplo, si estas trabajando con ordenes y productos, lo mas probable es que quieras aplicar algún descuento por cantidad, calcular el envio, etc..., en este caso tiene sentido HYDRATE_OBJECT, ahora si voy a mostrar las últimas 10 noticias del blog, para que quiero objetos ?, si no voy a hacer calculo alguno, es mejor opción HYDRATE_ARRAY.

Lo que debe quedar claro es que siempre se hace el hydrate lo que cambia es el tipo de hydrator y este se puede especificar en el DQL, un ejemplo(con D2):

Código PHP:
Ver original
  1. //as Object
  2. $query = $em->createQuery('SELECT u FROM User u');
  3. $users = $query->getResult(Query::HYDRATE_OBJECT);
  4.  
  5. //as Array
  6. $query = $em->createQuery('SELECT u FROM User u');
  7. $users = $query->getResult(Query::HYDRATE_ARRAY);
  8.  
  9. //or shortcut
  10. $users = $query->getArrayResult();
Talves en base a esto puedas re formular alguna de tus preguntas.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 22/05/2011, 11:29
 
Fecha de Ingreso: marzo-2010
Mensajes: 71
Antigüedad: 14 años
Puntos: 24
Respuesta: Retornar valores.. Objeto o Array?

Ahhh, ahora si quedo claro. Ya entendi bien cual usar dependiendo de la situacion.

Si me surge otra duda vuelvo a consultar.

Gracias
  #7 (permalink)  
Antiguo 23/05/2011, 12:50
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 7 meses
Puntos: 3
Respuesta: Retornar valores.. Objeto o Array?

Que bien me vino esto.

Etiquetas: objeto
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:10.