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

Object to Array

Estas en el tema de Object to Array en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos. Estoy tratando de crear una función que recibe un array de objetos y crea una tabla. Cada objeto sería una fila y paso ...
  #1 (permalink)  
Antiguo 02/02/2008, 16:22
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
Mensaje Object to Array

Hola amigos.

Estoy tratando de crear una función que recibe un array de objetos y crea una tabla. Cada objeto sería una fila y paso tambien un segundo array con los nombres de las columnas. Suponiendo que es una tabla de personas y el objeto persona tiene las propiedades nombre y apellido entonces en el segundo parametro envio array('nombre', 'apellido').

La idea sería hacer un foreach($objectsArray as $object) para ir creando las filas pero al intentar hacer un eval('$object->getNombre()') por ejemplo me da un error eval'd.

La segunda opción que pense es convertir los objeto a array entonces tendrías esto

class Persona
{
public $nombre;
private $apellido;

function Persona()
{
$this->nombre = 'Juan';
$this->apellido = 'Perez';
}

public function getNombre()
{
return $this->nombre;
}

}


$p = new Persona();
print_r($p);

$array = (array) $p;

echo "<br>------------------------<br>";

print_r($array);

echo "<br>------------------------<br>";
echo "Nombre: " . $array['nombre'];
echo "<br>------------------------<br>";
echo "Apellido: " . $array['apellido'];

El resultado es esto

Persona Object ( [nombre] => Juan [apellido:private] => Perez )
------------------------
Array ( [nombre] => Juan [Personaapellido] => Perez )
------------------------
Nombre: Juan
------------------------
Apellido:

Note que el apellido no lo imprime por ser privado. Hay alguna forma de poder imprimirlo?
  #2 (permalink)  
Antiguo 02/02/2008, 16:32
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
Re: Object to Array

Que error te da al usar eval?, en si no deberias tener problema si haces algo asi:
Código PHP:
eval( '$resultado = $objecto->get' $propiedad '();' ); 
Saludos.
  #3 (permalink)  
Antiguo 02/02/2008, 17:13
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
Re: Object to Array

Amigo GatorV me abriste la mente.

El problema es que lo usaba directamente asi (pero sin el punto y coma que me hiciste notar salia un error eval'd que sigo sin entender que significa jeje)

$tableHTMLContent .= '<td class="'.$classRowColor.'">'.eval('$object->getDescripcion();').'</td>';

Por lo visto no devuelve el contenido de la propiedad directamente asi. Entonces lo probe metiendo en una variable auxiliar como tu lo hiciste.

eval('$desc = $object->getDescripcion();');
$tableHTMLContent .= '<td class="'.$classRowColor.'">'.desc.'</td>';

Pero no queria usar esa variable auxiliar y probe usando un return cosa que funcionó a las mil maravillas
$tableHTMLContent .= '<td class="'.$classRowColor.'">'.eval('return $object->getDescripcion();').'</td>';


Muchas gracias amigo
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 08:07.