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

Agregar propiedades a una clase en tiempo de ejecución

Estas en el tema de Agregar propiedades a una clase en tiempo de ejecución en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola. Estoy programando un ORM y para ello estoy creando clases genéricas de las que extiendan el resto de clases. El caso es que me ...
  #1 (permalink)  
Antiguo 16/06/2009, 02:13
 
Fecha de Ingreso: abril-2007
Mensajes: 114
Antigüedad: 17 años, 8 meses
Puntos: 2
Agregar propiedades a una clase en tiempo de ejecución

Hola.

Estoy programando un ORM y para ello estoy creando clases genéricas de las que extiendan el resto de clases. El caso es que me veo en la necesidad de añadir a esta clase una serie de propiedades dinámicamente y no encuentro la manera de hacerlo. Si alguien sabe cómo o conoce algo de documentación al respecto se lo agradecería.

Gracias. Un saludo
  #2 (permalink)  
Antiguo 16/06/2009, 10:05
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 17 años, 2 meses
Puntos: 48
Respuesta: Agregar propiedades a una clase en tiempo de ejecución

No se si estos enlaces te pueden servir.

http://www.clases-de-php.com.ar/clas...ection-api.php

http://es.php.net/manual/es/language...reflection.php

Nunca he implementado lo que se menciona en ellos, pero creo que pueden ayudarte o darte pistas.

Saludos!
  #3 (permalink)  
Antiguo 16/06/2009, 12:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 7 meses
Puntos: 2135
Respuesta: Agregar propiedades a una clase en tiempo de ejecución

Mmm no te sirve usar los métodos mágicos __get/__set para agregar propiedades?

Saludos.
  #4 (permalink)  
Antiguo 17/06/2009, 13:39
 
Fecha de Ingreso: junio-2009
Mensajes: 19
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Agregar propiedades a una clase en tiempo de ejecución

En tu clase Padre puedes hacer algo como lo siguiente:

Código PHP:
    public function __get$field ) {
        if ( 
array_key_exists$field$this->values ) ) {
            return 
$this->values[$field];
        } else {
            throw new 
Exceptionsprintf'ERROR: Invalid field: "%s"'$field ) );
        }
    }
    
    public function 
__set($field,$value){
        if ( 
array_key_exists$field$this->values ) ) {
            if ( ( 
$this->values[$field] === null && $value !== null ) || $value != $this->values[$field] ) {
                
$this->values[$field] = $value;
            }
        }
    } 
El atributo $this->values lo declaras en tu clase heredada:

Código PHP:
protected $values = array(
            
             
'amiParent'                => null
             
,'amiChild'                => null ); 
Tu clase heredada solamente tendrá información de la estructura de tu tabla, toda la funcionalidad gorda queda en manos del padre.

Bueno no se si te ha podido servir, pero a lo mejor te da idéas para hacer algo.

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 02:16.