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

__set y __get en una clase hija

Estas en el tema de __set y __get en una clase hija en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenos dias a todos, He creado una clase generica con unos propiedades genericas a los que acceso mediante __get y __set . class generic{ __construct(){}; ...
  #1 (permalink)  
Antiguo 03/05/2009, 07:17
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 7 meses
Puntos: 0
__set y __get en una clase hija

Buenos dias a todos,

He creado una clase generica con unos propiedades genericas a los que acceso mediante __get y __set .

class generic{
__construct(){};
// some methos here
__get(){};
__set(){};
};

Estoy creando clases que la extienden.

class something extends generic{
parent::__construct(){};
__get(){};
__set(){};
};

Estas clases tienen sus propiedades ademas de la clase generica y necesito tener acceso a estas propiedades. Veo que al definit __get y __set en clases extendidas no se ejecuta __get y __set de clase padre generica.

Tengo que crear obligatoriamente methodos con otros nombres en clases extendidas? O hay una sintacsis para poder utilizat _get y __set en clases extendidas?

Gracias a todos por adelantado!
  #2 (permalink)  
Antiguo 03/05/2009, 15:26
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: __set y __get en una clase hija

Claro, usa parent:: igual que el constructor para leer las propiedades padre.

Saludos.
  #3 (permalink)  
Antiguo 04/05/2009, 01:15
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: __set y __get en una clase hija

Se trata de leer propiedades de clase hijo, porque el de padre logicamente se lea.

Código PHP:
clase padre {
    public function 
__get($property){
      
   switch(
$property) {
       case 
"somePadreProperty":
       return 
$this -> somePadreProperty;
       break;
 }
}

clase hijo extends padre{

 public function 
__get($property){
      
   
/*es para leer propiedades de la clase padre */
   
parent::__get($property);
  
/* es para leer propiedades de la clase hijo actual */
   
switch($property) {
       case 
"someHijoProperty":
       return 
$this -> someHijoProperty;
       break;

 }

}


Esto no funciona! Parece que sobreescribo el metodo __get y no me devolve propiedades de clase padre. Funciona si cambio el nombre de metodo __get de clase hijo a cualquer otro.

Gracias!
  #4 (permalink)  
Antiguo 04/05/2009, 07:43
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: __set y __get en una clase hija

Te faltaria el "return" de parent::__get().

Saludos.
  #5 (permalink)  
Antiguo 04/05/2009, 14:53
 
Fecha de Ingreso: septiembre-2006
Mensajes: 349
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: __set y __get en una clase hija

Muchissimas gracias!
Queda asi
clase hijo extends padre{

public function __get($property){

/* es para leer propiedades de la clase hijo actual */
switch($property) {
case "someHijoProperty":
return $this -> someHijoProperty;
break;

}
/*es para leer propiedades de la clase padre */
return parent::__get($property);

}
}
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 23:07.