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

Pasar un array a un objeto

Estas en el tema de Pasar un array a un objeto en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, Ahora que estoy empezando con PHP Oriendado a Objetos me asaltan unas cuantas dudas... ¿es posible pasar un array a un objeto? Me explico, ...
  #1 (permalink)  
Antiguo 16/01/2008, 15:08
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Pasar un array a un objeto

Buenas,

Ahora que estoy empezando con PHP Oriendado a Objetos me asaltan unas cuantas dudas...

¿es posible pasar un array a un objeto?

Me explico, teniendo un array así:

$array['elemento'];
$array['elemento2'];
$array['elemento3'];

que me lo pase a:

$objeto->elemento;
$objeto->elemento2;
$objeto->elemento3;

¿Se puede hacer?
  #2 (permalink)  
Antiguo 16/01/2008, 15:28
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: Pasar un array a un objeto

Si trabajas con PHP5 podrías probar con ArrayInterface aunque yo creo lo mejor que puedes hacer es programar manualmente tu clase.

Saludos.
  #3 (permalink)  
Antiguo 16/01/2008, 15:49
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Pasar un array a un objeto

Umm, ¿y manualmente cómo sería?

Es decir, teniendo en una variable el indice, ¿cómo lo meto en el objeto?

Vamos, yo diría que puede ser algo así:

Código PHP:

$keys_array 
array_keys($array);
foreach (
$keys_array as $var) {

     
$this->loquesea = ?¿?

Ando algo perdidillo con la POO....
  #4 (permalink)  
Antiguo 16/01/2008, 16:13
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: Pasar un array a un objeto

Usa las funciones mágicas __get y __set para obtener, por ejemplo algo asi:
Código PHP:
class ArrayWrapper {
         private 
$array;

         public function 
__construct$array = array() ) {
                 
$this->array $array;
         }

         public function 
__get$index ) {
                 return 
$this->array[$index];
         }

         public function 
__set$index$value ) {
                 
$this->array[$index] = $value;
         }
}

$array['elemento'] = "asd";
$array['elemento2'] = "asd";
$array['elemento3'] = "asd";

$objeto = new ArrayWrapper$array );
echo 
$array->elemento1
Saludos.
  #5 (permalink)  
Antiguo 16/01/2008, 16:48
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Pasar un array a un objeto

Ummm, creo que ya lo he pillado.... No parece muy complicad, muchas gracias!

Una última cosa, si esa clase la necesito usar en otras tantas clases... ¿cuál sería el mejor modo de hacerlo? ¿Hay herencia en PHP?

Lo que quiero decir es, ¿dónde la tendría que definir y cómo accedería a ella desde todas las clases de la aplicación que necesiten convertir un array en un objeto?
  #6 (permalink)  
Antiguo 16/01/2008, 16:53
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: Pasar un array a un objeto

Si hay herencia en PHP, y para usarla en otras clases solo es necesario instanciarla:
Código PHP:
class algo {
       public function 
otracosa() {
              
$wrap = new ArrayWrapper();
       }

Para definirla lo mejor es tener un archivo PHP independiente por cada clase, así la incluyes en el inicio de tu script vía include_once.

Saludos.
  #7 (permalink)  
Antiguo 16/01/2008, 17:35
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 21 años, 5 meses
Puntos: 17
Re: Pasar un array a un objeto

Supongo que el public también podrá ser de la clase que haya creado, ¿no?

Bueno, de todos modos mañana lo pruebo, que aquí es tarde y uno tiene que dormir.

La idea será tener un requiere_once('clase_ArrayWrapper'); (por ejemplo), y luego que la hereden el resto de clases donde tenga que usarlo...

Pero bueno, cuando tenga un rato lo pruebo.

Muchas gracias!
  #8 (permalink)  
Antiguo 16/01/2008, 17:37
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: Pasar un array a un objeto

Recuerda que no es necesario heredar la clase para usarla, mejor piensa y abstrae tus objetos antes de heredar desde una clase base.

Saludos.
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 00:44.