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

Solicito su opinion con respecto a mi clase

Estas en el tema de Solicito su opinion con respecto a mi clase en el foro de Frameworks y PHP orientado a objetos en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 05/12/2008, 01:46
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 150
Antigüedad: 15 años, 9 meses
Puntos: 4
Solicito su opinion con respecto a mi clase

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
  #2 (permalink)  
Antiguo 05/12/2008, 06:57
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años
Puntos: 37
Respuesta: Solicito su opinion con respecto a mi clase

tu clase hace demasiadas cosas.

Para redireccionar debeiras usar header(); no javascripts, eso por empezar, la verdad que no se entiende bien que hace tu clase .
__________________
blog
  #3 (permalink)  
Antiguo 05/12/2008, 09:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Solicito su opinion con respecto a mi clase

Exacto, una de las reglas al diseñar en POO es que tus objetos sean concisos, si hacen mucho de todo, es dificil luego entender el funcionamiento, por ejemplo una clase PagoNomina que se encargue de contar los dias de ausencia es incorrecto, deben de existir dos clases en ese aspecto.

Saludos.
  #4 (permalink)  
Antiguo 05/12/2008, 10:21
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 150
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Solicito su opinion con respecto a mi clase

Gracias por los comentarios.

Argumento lo siguiente:

1. Utilicé javascript porque al redireccionar con header; por ejemplo despues de insertar un registro; si actualizaba mi página volvía insertar el registro.


2. En esta clase solo trabajo los métodos que utilizo repetitivamente para todos los módulos del proyecto. En su momento por supuesto que tengo que crear las clases:
Venta, Compra, Proyecto, Factura, etc.

3. 5 métodos son muchas cosas para una clase?
  #5 (permalink)  
Antiguo 05/12/2008, 10:24
Avatar de pablofmorales  
Fecha de Ingreso: abril-2008
Ubicación: Buenos Aires, Argentina, Argentina
Mensajes: 222
Antigüedad: 16 años
Puntos: 37
Respuesta: Solicito su opinion con respecto a mi clase

Cita:
Iniciado por pixel1 Ver Mensaje
3. 5 métodos son muchas cosas para una clase?
No es por la cantidad sino por las cosas que hacen , no tienen mucha relacion.
__________________
blog
  #6 (permalink)  
Antiguo 05/12/2008, 11:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Solicito su opinion con respecto a mi clase

1.- Al usar header() es más limpio que al usar Javascript.

2.- En ese caso rompe los modulos, por ejemplo un modulo para el control de trafico (p.e. HttpUtil), y otro para describir las tablas.

Saludos.
  #7 (permalink)  
Antiguo 05/12/2008, 17:21
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 150
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Solicito su opinion con respecto a mi clase

Cita:
Iniciado por GatorV Ver Mensaje
1.- Al usar header() es más limpio que al usar Javascript.

2.- En ese caso rompe los modulos, por ejemplo un modulo para el control de trafico (p.e. HttpUtil), y otro para describir las tablas.

Saludos.
Esta me aprece buena idea.

Gracias
  #8 (permalink)  
Antiguo 06/12/2008, 11:28
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: Solicito su opinion con respecto a mi clase

Estimado Pixel, no pierdas el tiempo y empieza aprendiendo un Framework ya desarrollado, usa Zend u otro, luego que lo entiendas, disuelve todas las reglas y si quieres (con la experiencia acumulada) desarrolla uno propio (luego deja los juegos de lado y vuelve a usar un Framework MVC profesional )

PD: además, el artículo habla de MVC y de ejemplos procedurales?! Mmmm... vamos por mal camino.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #9 (permalink)  
Antiguo 06/12/2008, 19:58
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 150
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Solicito su opinion con respecto a mi clase

Cita:
Iniciado por enriqueplace Ver Mensaje
Estimado Pixel, no pierdas el tiempo y empieza aprendiendo un Framework ya desarrollado, usa Zend u otro, luego que lo entiendas, disuelve todas las reglas y si quieres (con la experiencia acumulada) desarrolla uno propio (luego deja los juegos de lado y vuelve a usar un Framework MVC profesional )

PD: además, el artículo habla de MVC y de ejemplos procedurales?! Mmmm... vamos por mal camino.
Jeje, gracias por el consejo vamos por el mal camino? pues entonces trataré de corregirlo (con la ayuda de ustedes claro).

Comenzaré con el Framework de Zend...

Saludos.
  #10 (permalink)  
Antiguo 07/12/2008, 02:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Solicito su opinion con respecto a mi clase

porque, del final... de la implicación ... ???

si, espesamos con Zend .. pero es necesario, hace alguno (grumo) ... ??

o, seguir lo nuestro ?....


filosofía: zen (no Zend)


<- yeAh!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 07/12/2008, 12:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Solicito su opinion con respecto a mi clase

Perdón Pateketrueke,

Pero no entendi que es lo que quiciste decir.

Saludos.
  #12 (permalink)  
Antiguo 07/12/2008, 15:57
 
Fecha de Ingreso: julio-2008
Ubicación: México
Mensajes: 150
Antigüedad: 15 años, 9 meses
Puntos: 4
Respuesta: Solicito su opinion con respecto a mi clase

Pateketrueke yo tampoco entendí...
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:09.