Bueno, estos días he venido leyendo y solicitadno consejos respecto a temas de POO y MVC. Finalmente he empezado a desarrollar basado un poco en este tutorial: 
http://www.jourmoly.com.ar/introducc...primera-parte/. 
Despues de mucho pensar y ponerme a trabajar un poco he generado esta clase, de la que me gustaria me dieran su opinion:  
 Código PHP:
    class Mysql extends ModelBase
{
 
    /*Método privado que me permite conocer la estructura de una tabla*/
    private function describeTabla($tabla, $excluye="")
    {
        $consulta= $this->db->prepare('DESCRIBE '.$tabla);
        $consulta->execute();
 
        while($d=$consulta->fetch())
        {
            if( (is_array($excluye) && !in_array($d[0],$excluye)) || (!is_array($excluye) && $excluye != $d[0]) )
                $salida[]    =    $d[0];
        }
        return $salida;
    }
 
    /*Metodo privado para poder redireccionar */
    private function redirecciona($url="")
    {
        if(empty($url))
        {
            //Separo la ruta de las variables
            $str=explode("?",$_SERVER['HTTP_REFERER']);
            //Pongo la accion en listar
            $url=$str[0]."?accion=listar";
        }
        echo '<script languaje="javascript">location.href=\''.$url.'\';</script>';
    }
 
    //Metodo publico para crear lista de datos
    public function listado($tabla, $where="")
    {
        //realizamos la consulta de todos los items
        $consulta = $this->db->prepare('SELECT * FROM '.$tabla.$where);
        $consulta->execute();
        //devolvemos la coleccion para que la vista la presente.
        return $consulta;
    }
 
 
    //Método público que me permite cachar datos de un formulario y meterlos a una tabla
 
    public function agregar($tabla,$data,$indice="",$valorIndice=0)
    {
        $salida=$this->describeTabla($tabla);
        $query            =    "";
        //Formo el query de manera dinámica
        foreach($salida as $clave)
         if(!empty($data[$clave]))
            $query        .=    (($query=="")?"":",")."$clave='".$data[$clave]."'";
            
         //Defino si actualizaré datos o insertaré    
         if($valorIndice!=0)
            $query        =    "UPDATE $tabla SET ".$query." WHERE ($indice='".$datos[$indice]."')";
         else
            $query        =    "INSERT INTO $tabla SET $query";
            
        //Preparo y ejecuto la consulta    
        $consulta = $this->db->prepare($query);            
        $consulta->execute();
        
        //Redirecciono
        $this->redirecciona();
    }
    
    
    //Mettodo publico para eliminar un registro
    public function eliminar($tabla, $indice, $valor)
    {
        //realizamos la consulta de todos los items
        $consulta = $this->db->prepare('DELETE FROM '.$tabla. ' WHERE '.$indice.'='.$valor);
        $consulta->execute();
        //devolvemos la coleccion para que la vista la presente.
        $this->redirecciona();
    }    
    
} 
    
  Gracias