Ver Mensaje Individual
  #3 (permalink)  
Antiguo 24/03/2009, 20:57
isra00
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Mi primer Script

Muy mal!!! Como dice juamd podrías... mejor dicho DEBERÍAS usar diferentes clases para el acceso a la base de datos. Es una cuestión de lógica: la POO se inventó para reutilizar el código (te suena el principio abierto-cerrado?). Así que si quieres mantener en tu programa objetos de tipo "persona" (piensa en una persona en la realidad), no tiene sentido que en el concepto de "persona" vaya implícita su forma de almacenamiento.

Debes dotar de arquitectura tu script. Un error que mucha gente comete al pasarse a POO es no diseñar bien sus clases y, en general, la arquitectura de su programa. En programación no orientada a objetos es necesario hacerlo, pero las estructuras del lenguaje (includes y "gotos" modernos) permiten ciertas chapuzas. Gracias a Dios, esas chapuzas muchas veces en POO no se pueden mantener.

Para tu caso, te recomiendo implementar el patrón DAO (Data Access Object), que establecería un modelo de tres capas: almacenamiento, manejo del almacenamiento y lógica de negocio. Esto se traduce como BD MySQL, una o varias clases que accedan a la BD y trabajen con objetos, y los objetos en sí. Además, para facilitar el acceso a la BD por parte del DAO, puedes crear una clase Mysql. Si quieres ten envío por MP un par de clases (Conexion y Consulta) que estoy usando para un proyecto, aunque seguramente PEAR::DB o la que tú mismo hagas resulte igual o más útil.

Objeto de negocio "User":

Código PHP:
class User{
    var 
$nomUsr;
    var 
$pass;
    var 
$nombre;
    var 
$apellido;
    var 
$email;
    var 
$UserID
   
    public 
__construct($nomUsr$pass$nombre$apellido$email$UserID=null) {
       
$this->nomUsr $nomUsr;
       
$this->pass $pass;
       
$this->nombre $nombre;
       
$this->apellido $apellido;
       
$this->email $email;
       
$this->UserID $UserID
    } 
Funciones de acceso a la base de datos para usuarios

Código PHP:
class DaoUser {
   
//Es estática ya que son funciones no instanciables. Podrías utilizarlas sin POO, pero meterlas en una clase ayuda a organizar el código y facilita su lectura
   
public static function GetDataUser($UserID){
        
$Query "SELECT * FROM users WHERE id='".$UserID."'";
        
$SQLQuery=mysql_query($Query,$this->db_ConID);
        
        if (
mysql_num_rows($SQLQuery) == 1) {
            
$row mysql_fetch_array($SQLQuery);
            return new 
User($row['nomusr'], null$row['nombre'], $row['apellido'], $row['email']);
        }

    
//Otra función podría ser, por ejemplo, cambiar clave
    
public static CambiarClave($UserID$newPassword) {
         
$query mysql_query("UPDATE users SET password='$newPassword' WHERE id = $UserID");
    }


Seguramente estés pensando "este tío qué me está diciendo...??". La POO añade complejidad a los sistemas, pero también una estructura sostenible y escalable. Por muy sencillo que sea tu script, debes armar una estructura de clases decente. Aunque ojo, la POO no es perfecta, a veces es mejor desarrollar scripts al estilo tradicional.

En fin, espero que hayas entendido un poco la metodología que intento transmitirte, es un modelo básico que hoy en día se usa muchísimo, y facilita la reutilización del código y la posibilidad de extender los programas de forma ordenada. Si tienes cualquier duda estaré encantado de ayudarte.

Saludos.

Última edición por jpinedo; 24/03/2009 a las 21:47 Razón: Remover firma del cuerpo del mensaje
Advertencia Recibida