Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/05/2013, 18:30
cobolero_poseido
 
Fecha de Ingreso: mayo-2007
Mensajes: 54
Antigüedad: 17 años, 6 meses
Puntos: 1
Evitar instanciar clase padre ante de su hija

Hola,

Estoy intentando hacer un login. Hay distintos tipos de usuarios que pueden logearse y dependiendo si es administrador, operario, administrativo, etc podra realizar una tarea u otra.

Lo que habia pensado es, tener una clase Usuarios (entre otros metodos, todos van a tener un metodo login, otro logout y otro obtener tipo de usuario), luego una clase para administrador, otra para operario y administrativo con sus atributos y metodos correspondientes heredando de la clase Usuarios.

En la clase usuario estoy haciendo el login (ya que nose quien esta intentando logearse, si es admin, operario o administrativo), de modo que lo que primero que haria es consultar si el mail y pass son correctos y despues con otro metodo obtendria que tipo de usuario es.

Si obtengo que es administrador instancio la clase administrador, si es operario instancio operario y sino administrativo. Supongamos que se loguea un administrador, aqui es donde no me cierran las cosas porque en teoria ya instancie la clase padre (al hacer login instancie usuario para acceder a su metodo) y ahora voy a estar intentando instanciar administrador quien a su vez va a instanciar la clase padre usuarios.... creo que hay algo que no estoy teniendo en cuenta. Como resolverian esto?

La clase usuario es mas o menos como sigue:

Código PHP:

require_once 'DB.class.php';

class 
Usuarios {    
    protected 
$db;
    private 
$email;
    private 
$pass;
    
    
/* Se obtiene la conexion con la DB */
    
protected function __construct() {
        
$this->db DB::getInstance();              
    }
    
    
/* Se setea el email */    
    
protected function setEmail($email) {
        
$this->email mysql_real_escape_string($email);
    }
    
    
/* Se setea el pass */    
    
protected function setPass($pass) {
        
$this->pass mysql_real_escape_string($pass);
    }
    
    
/* Se obtiene el email */    
    
protected function getEmail() {
        return 
$this->email;
    }
    
    
/* Se obtiene el pass */    
    
protected function getPass() {
        return 
$this->pass;
    }
    
    protected function 
__destruct() {
        return 
true;
    }    
    
    
/* Funcion para verificar el login a la aplicacion, si el login es correcto devuelve true y sino false */
    
protected function loginUser() {
        
$query sprintf("select * from usuarios where email = '%s' and pass = '%s' and estado='A'"$this->email$this->pass);
        if (
$this->db->existRow($query))
            return 
true;
        return 
false;
    } 


Gracias