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

Acceder a objetos de una clase abstracta

Estas en el tema de Acceder a objetos de una clase abstracta en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas Tengo creada una clase abstracta la cual deuelve los datos de un usuario, como ser nombre, email, id, necesito saber de que manera puedo ...
  #1 (permalink)  
Antiguo 26/05/2011, 11:30
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Acceder a objetos de una clase abstracta

Buenas

Tengo creada una clase abstracta la cual deuelve los datos de un usuario, como ser nombre, email, id, necesito saber de que manera puedo acceder a ellos desde un controlador para mostrar esos datos en una vista, ya que no puedo hacer

$datos = new Mi_ClaseAbstracta();

Como podria llegar a los datos?
  #2 (permalink)  
Antiguo 26/05/2011, 11:44
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: Acceder a objetos de una clase abstracta

La idea de una clase abstracta es esa, que no se pueda instanciar, por lo que es forzoso que crees una clase que extienda la clase abstracta y defina los métodos abstractos.

Saludos.
  #3 (permalink)  
Antiguo 26/05/2011, 11:47
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Acceder a objetos de una clase abstracta

Y porque la has creado abstracta ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #4 (permalink)  
Antiguo 26/05/2011, 11:56
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: Acceder a objetos de una clase abstracta

Cita:
Iniciado por masterpuppet Ver Mensaje
Y porque la has creado abstracta ?
Porque tiene datos privado del usuario, y antes no se habia pensado leerlos, pero de todas formas no quiero acceder a todos, solo al mail, id y nombre, de esa manera alivianar la carga.

Ya me he creado una clase que extiende de usuarios de esta forma:

GrupoUsuario es la clase que tiene todos los datos

Código PHP:
class DatosGrupo extends GrupoUsuario
{
    
/**
     * Constructor.
     * 
     * 
     */
    
public function __construct(Model_Usuario $usuario) {
        
parent::__construct($usuario);
    }

    
/**
     * 
     * 
     */
    
public function  getEmail()
        {
           
parent::getEmail();
        }

        public function  
getId() {
          
parent::getId();
    }

El tema es que obtengo este error:

Catchable fatal error: Argument 1 passed to DatosGrupo::__construct() must be an instance of Model_Usuario, none given
  #5 (permalink)  
Antiguo 26/05/2011, 12:41
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Acceder a objetos de una clase abstracta

El error es claro no le estas pasando ninguna instancia de Model_Usuario, y deberías replantearte lo que estas haciendo, no tiene sentido, se supone que vas a tener una jerarquía, sino cual es el punto en crear una clase abstracta de la que nadie extienda ?
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 26/05/2011, 12:43
 
Fecha de Ingreso: agosto-2003
Mensajes: 906
Antigüedad: 20 años, 8 meses
Puntos: 3
Respuesta: Acceder a objetos de una clase abstracta

Cita:
Iniciado por masterpuppet Ver Mensaje
El error es claro no le estas pasando ninguna instancia de Model_Usuario, y deberías replantearte lo que estas haciendo, no tiene sentido, se supone que vas a tener una jerarquía, sino cual es el punto en crear una clase abstracta de la que nadie extienda ?
La pense porque en un futuro se podia utilizar y como sucedio ahora me piden mostrar esos datos, no tiene sentido hacerla publica si solo deseo algunos datos, para consumir menos recursos.

Entonces me arme esta otra clase que extiende de la abstracta para poder utilizar ciertos datos puntuales.

Como podria pasarle esa instancia?
  #7 (permalink)  
Antiguo 26/05/2011, 12:57
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 3 meses
Puntos: 845
Respuesta: Acceder a objetos de una clase abstracta

Cita:
La pense porque en un futuro se podia utilizar y como sucedio ahora me piden mostrar esos datos, no tiene sentido hacerla publica si solo deseo algunos datos, para consumir menos recursos.
No comprendo tu razonamiento, si la clase es abstracta y nadie extiende de ella, no se puede instanciar, osea no la estas utilizando, entonces para que crearla ?, ahora estas extendiendo una clase con el único fin de acceder a sus propiedades, te parece lógico ?, por lo que estas mostrando GrupoUsuario no debería ser abstracta.

Cita:
Como podria pasarle esa instancia ?
Código PHP:
Ver original
  1. $dgroup = new DatosGrupos(new Model_Usuario());
__________________
http://es.phptherightway.com/
thats us riders :)

Etiquetas: acceder, clase, objetos
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:22.