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

¿Es correcto esto?

Estas en el tema de ¿Es correcto esto? en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, como ya dije en otro post, que no ha tenido mucho éxito jeje, estoy desarrollando un proyecto en 3 capas, o intentándolo al menos ...
  #1 (permalink)  
Antiguo 03/02/2008, 05:52
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 4 meses
Puntos: 0
¿Es correcto esto?

Hola, como ya dije en otro post, que no ha tenido mucho éxito jeje, estoy desarrollando un proyecto en 3 capas, o intentándolo al menos :P. Mi pregunta es la siguiente, es correcto tener una clase que contenga todas las consultas a BD con funciones que devuelvan otros objetos, por ejemplo, algo así? o ¿cómo sería la forma correcta de hacerlo?

Código PHP:

<?php
  
include("../db/database.php");
  
  class 
consulta{
  
    private 
$db;
    private 
$conectado;
    
    function 
__construct(){
      
$this->db = new database();
      
$this->conectado $this->db->conectar();
    }

    function 
obtener_usuario($user){
      if(
$this->conectado) {
        
$query "SELECT idUsuario, pass, DNI, nombre, apellidos, idOcupacion, profesor FROM m_usuarios WHERE user = '$user'";
        if (
$this->db->consultar($query)){
          include(
"../class/usuario.php");
          
$data $this->db->resultado_fetch_array();
          
$user = new usuario();
          
$user->set_idUsuario($data["idUsuario"]);
          
$user->set_user($user);
          
$user->set_pass($data["pass"]);
          
$user->set_DNI($data["DNI"]);
          
$user->set_nombre($data["nombre"]);
          
$user->set_apellidos($data["apellidos"]);
          
$user->set_idOcupacion($data["idOcupacion"]);
          
$user->set_profesor($data["profesor"]);
          return 
$user;
        } 
      }
      return 
false;
    }
  
  }
    

?>
Un saludo,
  #2 (permalink)  
Antiguo 03/02/2008, 07:26
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 7 meses
Puntos: 56
Re: ¿Es correcto esto?

Hola,
si estás trabajando en un proyecto de tres capas lo mejor es que tengas en una clase en un modelo que interactúa con la base de datos y que puede ser llamado desde un controlador que se encarga de la parte lógica para que finalmente todoa la data a mostrar sea enviada a la vista, que es la que contiene los templates de cada página.
Dale una mirada a CodeIgniter para que te aclares un poco.
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #3 (permalink)  
Antiguo 03/02/2008, 08:59
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ¿Es correcto esto?

Hola jcxnet,

Estoy un poco perdido en cuanto a los conceptos modelo, controlador y vista. Yo solo he programado con O.O. en Java, y de eso hace ya mucho. Creo que lo que tu me dices que es el modelo que interactua con la base de datos sería la clase "database" que tengo creada, y se podría incluir en ese modelo la clase "consulta" que adjunto y sería la capa de acceso a datos, ya que es la encargada de instanciar un objeto database y hacer las querys. Entiendo por controlador una clase o varias que se encarguen de la parte lógica, y por vistas los ficheros pertenecientes a la capa de presentación.

En un principio, con mis pocos conocimientos en la materia que espero ampliar poco a poco, no quiero usar ningún framework, quiero intentar desarrollar uno, ya que es para el proyecto de fin de carrera y no se que tal visto estará que use algo ya hecho, aunque seguramente no haya ningún problema.

Me gustaría saber si le veis alguna pega a la "metodología" que usaría en la programación (el código que adjunto en el post original).


Muchas gracias por contestar :)
  #4 (permalink)  
Antiguo 03/02/2008, 13:04
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: ¿Es correcto esto?

mmm yo por mi parte lo veo medio bien. Es decir eso que pones ahi podria ser el modelo......... Tienes que enteder que el modelo suele ser UNICO pero no confundas UNICO con que todo este en el mismo archivo. Es decir....... tu puedes tener un contrtolador de usuario (controlador_usuario.php) ....y que cuando este necesite datos de usuario en concreto pues ire al archivo (modelo_usuario.php) a pedirselos. El modelo_usuario.php tendra metodos del tipo Obtener_usuario(nombre), obtener_num_dni_del_usuario(nombre) ........cosas asi...... de esta manera aunque el modelo es unico.......lo tendremos "esparcido para ser mas modular y manejable".
Desde el modelo lo unico que se hara sera ir a la BD, cojer datos, y devolverlos o a lo sumo utilizar los datos de la BD para cargarselos a un atributo suyo , para posteriormente devolver ese atributo (parecido lo que haces tu con usuario en el ejemplo de arriba)

Luego el controlador jugara con todos los datos que necesite ......... y creara la vista que necesite ..... (PERO EL CONTROLADOR NUNCA ACCEDE A LA BD)....cuando quiere datos los pide al modelo

espero haberte aclarado algo....
  #5 (permalink)  
Antiguo 03/02/2008, 15:07
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ¿Es correcto esto?

Hola Blade_Stom, si, me has sido de gran ayuda, creo que seguire tu consejo y creare un modulo por cada clase de la que tenga que extraer datos de la BD y así será todo más manejable y entendible.

Tengo una duda más, cuando haga una consulta desde un modulo de laboratorio, por ejemplo, que me devuelva un listado de varios laboratorios, mi módulo ha de devolver un array de objetos por ejemplo, o devuelvo el resultado de la query y la transformación en el array lo hago en el controlador;imagino que la primera opción (que el modulo me devuelva los datos como array de objetos) es mejor opción...

Y otra cosa más, es correcto que la validación de datos de un formulario se haga con funciones definidas dentro de un objeto como puede ser usuario, por ejemplo para validar el DNI, o he de crearme otra clase para validar formularios?

Muchas gracias.

Un saludo,
  #6 (permalink)  
Antiguo 03/02/2008, 16:34
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: ¿Es correcto esto?

respecto a lo de devolver datos de la query o en un array......ps en mi modesta opinion la k teu prefieras...ya k el modelo se encargara de acer la query.....y si en vez de devolver valores sueltos...prefieres cargarlos en un array y devolver el array...ps tmb es correcto........
mientras k lo de validar formulario..........pues.......mm....depende de como lo kieras hacer ....y como sea tu programa......pero......si el formulario es solo respecto a usuarios....y lo k vas a acer es añadir un usuario.......se podria acer de muchas formas pero yo lo haria desde el controlador usuarios......(( dentro del controlador usuario pondria metodos especificos para la validacion de USUARIOS, mientras que si vas a usar metodos generales como comprobar que en todos los campos te meta datos o asi...ps yo tendria una clase aparte con esas funciones tan generales...y la clase usuario heredaria de ahi))

pero lo dicho, existen multiples formas de pensarlo.....

espero haberte sido de ayuda .....y recuerda........ en lo controladores y en todo en general......mete los metodos especificios para ello......es decir trata de no meter en controlador_usuario.php el metodo comprobar_mensaje_foro o cosas asi.......pk cuando tengas 50 clases...va a ser todo un caos que no sabes ni por donde pillar

un saludo
  #7 (permalink)  
Antiguo 04/02/2008, 01:21
 
Fecha de Ingreso: diciembre-2007
Mensajes: 50
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: ¿Es correcto esto?

Hola, seguiré tu consejo, lo cierto que ya tengo unos pocos ficheros y ya es un caos, todo lo que tenía lo estoy reescribiendo xD, pero creo que me está mereciendo la pena.

Thanks
  #8 (permalink)  
Antiguo 04/02/2008, 14:10
 
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 127
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: ¿Es correcto esto?

Podrían decirme como crear una aplicación tipo Master Page en PHP utilizando el Macromedia Dream Wevaer. GRACIAS
  #9 (permalink)  
Antiguo 09/02/2008, 09:42
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: ¿Es correcto esto?

Hola Merodeador / Blade_Storm

Muy interesante lo expuesto (e ilustrativo como intro al vocabulario MVC), quisiera sólo añadir dos comentarios (que agregan a lo escrito)
1.- La idea de que la parte que crea los objetos esté separada de la que accede a la BD, no es sólo para mayor limpieza y mantenimiento, sino que te permitiría en un futuro cambiar de manejador de base de datos con un impacto aún menor.

2.- Con respecto a las validaciones. Lo lógico es que en cada capa hayan las validaciones propias de la capa. Por ejemplo, para validar un campo DNI (Documento Nacional de Identidad en España)está bien, en la capa de presentación deberías verificar todo lo que puedas, pero adicionalmente en la capa de lógica debes verificar que tenga el formato correcto (quizás un regular expression) y en la de acceso a BD, validar que no sea un string de longitud mayor a la que acepta el campo en la BD. Es decir, a cada capa lo suyo.
La razón para esto es que si en algún punto reemplazaras la capa presentación por un API (por ejemplo), ya sabrás que parte de la validación está en las otras capas.

Esto es la teoría. En ocasiones es un fastidio validar algo cuando sabes que sólo se invoca desde un sitio y en el que ya tienes una validación al respecto, pero para ser puristas, la separación de capas también implica una separación en la dependencia y por tanto en las validaciones.
__________________
pragone
Blog: Desarrollo, comunidad y monetización
Últimos artículos: Tips de Smarty
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:02.