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

MVC duda con el modelo

Estas en el tema de MVC duda con el modelo en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Tengo alguna duda a la hora de diferenciar el modelo y como implementarlo. Imaginemos que tengo el modulo noticas y el modulo foro. cada uno ...
  #1 (permalink)  
Antiguo 23/01/2008, 15:40
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 6 meses
Puntos: 2
MVC duda con el modelo

Tengo alguna duda a la hora de diferenciar el modelo y como implementarlo.
Imaginemos que tengo el modulo noticas y el modulo foro. cada uno de esos modulos tenga su propio controlador y su propia vista. pero tambien es recomendable que tengan su propio modelo? imaginense que dentro del controlador noticas existe un metodo que se llama verNoticias y dentro del controlador foro existen dos metodos que se llaman verMensajes y insertarMensajes
que tendria que tener un modelo para cada uno? y por ejemplo que el metodo verNoticas llame a su modelo y le pida que le meta todas las noticas en un array por ejemplo?
  #2 (permalink)  
Antiguo 23/01/2008, 15:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: MVC duda con el modelo

Depende, recuerda que el modelo representa el medio persistente donde se almacena/recupera la información.

Así que lo mas recomendable es que tengas uno o n modelos, y que estos sean accesados por cada controlador independientemente del modulo en el que estén.

Saludos.
  #3 (permalink)  
Antiguo 23/01/2008, 16:23
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: MVC duda con el modelo

pero que tal ves si por ejemplo creo un modelo por cada controlador de manera que por ejemplo.
el controlador noticias llama a los metodos del modelo noticias
el contorlador foro llama los metodos del modelo foro
el controlador discografia llama al modelo discografia

de manera que si queremos mostrar todas las noticias.......ps el controlador general llamara al controlador noticias diciendole lo que se kiere mostrar. el controlador noticias llamara al metodo getTodasNoticias del modelo Noticas. Dicho metodo del modelo sera el que conecte con la BD, haga el select, consiga todas las noticas en un array (por ejmplo) y se las devuelva al controlador. una vez el controlador obtenga las noticias , ps creara la vista...etc.....

que tal esta asi aplicado el mvc?
como lo veis?
  #4 (permalink)  
Antiguo 23/01/2008, 16:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: MVC duda con el modelo

Recuerda que la idea es que la capa modelo sea lo mas independiente posible, si haces tu un modelo por controlador, que pasa cuando agregues o cambies tablas en la base de datos?

Saludos.
  #5 (permalink)  
Antiguo 23/01/2008, 16:45
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: MVC duda con el modelo

si cambio la tabla referente a noticas ps como mucho tendre k ir al modelo de noticas que es el contacta con todo lo k tiene k ver con noticias y modificar lo k sea necesario.
nose ...no le veo demasiados problemas...

que problemas serios le ves tu? y como los solucionarias?
  #6 (permalink)  
Antiguo 25/01/2008, 04:40
venkman
Invitado
 
Mensajes: n/a
Puntos:
Re: MVC duda con el modelo

El modelo es único a nivel de la aplicación, y abarca un grupo de N clases y sus relaciones.

Es importante el detalle de las relaciones porque, al final eso es lo que realmente define el modelo de negocio (el funcionamiento) de la aplicación. En el modelo encontramos las clases que representan, por ejemplo, Usuario, Permiso, Mensaje, Tema, Foro, Noticia, Categoria, Comentario... y las relaciones entre ellos. Es decir, el hecho de que una Noticia tenga una Categoria (o más) y sea publicada por un Usuario o que un Mensaje pertenezca a un Usuario y esté publicado en un determinado Tema de un Foro.

Estas relaciones son tanto o más importantes que las propias clases. Cambia mucho al funcionamiento de la aplicación si decimos que una Noticia se publica en una Categoria o si decimos que las Categorias pertenezcen a los Usuarios.


La idea de organizar una aplicación en capas es una división horizontal. Otro tipo de división (vertical, que es lo que sugerís) es posible, pero normalmente no es adecuada en todas las capas. Por ejemplo, si tenemos una capa de persistencia (*) y todo lo tenemos en base de datos, la capa de datos se puede hacer única y general. Si en nuestra aplicación puede haber diferentes orígenes de datos (BBDD, ficheros, web-services, aplicaciones ya existentes...) entonces sí es buena idea hacer diferentes módulos en la capa de acceso a datos, de modo que, por ejemplo, sea independiente el acceso a BBDD del acceso a web-services.

En cualquier caso, el modelo es la capa que en general, nunca es buena idea dividir. Piensa que en el núcleo de negocio de una aplicación siempre habrá relación entre las partes de la misma. Quizá Noticia y Mensaje te parecen completamente independientes, pero en realidad ambos están relacionados con Usuario. Y más aún, ambos podrían derivar de una misma clase Contenido (ambos tienen un título, un texto, un autor, una fecha...).

Si encuentras un caso en que realmente tienes dos modelos que son completamente independientes... probablemente lo que ocurre es que tienes dos aplicaciones distintas.
  #7 (permalink)  
Antiguo 25/01/2008, 08:04
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: MVC duda con el modelo

entonces lo que me sugieres es que tengo un solo archivo modelo.php . en dicho archivo habra mogollon de clases del tipo clase noticas, clase usuario, clase foro, clase...etc.......y dentro de cada clase....metodos del tipo getNoticia, getnombre Usuario, getmensajeForo.......
eso es lo que me sugieres, no?

entonces todos los controladores tendran k ir a ese modelo a coger datos ...etc......

si es eso lo que me planteas se me ocurre una duda ........ en cada controlador tendre que poner arriba un include modelo.php y como ese modelo va a tener tantas clases, tantos metodos....etc........ no ralentizaremos el sistema?
tampoco kreo k el modelo vaya a ocupar 5 megas pk solo es texto....x muy largo que sea.....xo nose.......k opinas?
  #8 (permalink)  
Antiguo 25/01/2008, 09:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: MVC duda con el modelo

No es necesario que este en un solo archivo modelo.php, puede estar en varios archivos, y de hecho es recomendado que te acostumbres a que cada clase tenga su archivo.

A lo que se refiere venkman, es a que el modelo es una capa superior, y que las clases van y consultan, como el siguiente esquema:

Código:
         BDD                                          MODELO                                     CONTROLADOR / CLASES
medio persistente           =>     capa intermedia de          =>                capa de procesamiento
                                                        persistencia                                              de datos
Espero viendo ese diagrama te quede un poco mas claro.

Saludos.
  #9 (permalink)  
Antiguo 25/01/2008, 09:15
venkman
Invitado
 
Mensajes: n/a
Puntos:
Re: MVC duda con el modelo

Como dice GatorV, a lo que me refiero no es a que tengas un sólo fichero. A lo que me refiero es a que el Modelo = Grupo de clases, pero es todo el grupo unido. Que no debes pensar en "el modelo de este controlador" o nada similar. Sino en "el modelo de la aplicación".

En el caso que comentaba, el modelo es todo el conjunto de Usuario, Mensaje, Noticia, Permiso, Foro, Tema, Categoria, etc. Todas esas clases y sus relaciones forman el modelo.

En cuanto al tema de distribuirlo en archivos... no, no lo pongas todo en uno solo. Mete cada clase en su propio Usuario.php, Mensaje.php, etc.
  #10 (permalink)  
Antiguo 25/01/2008, 10:12
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: MVC duda con el modelo

claro a eso me referia (creo). yo por cada modulo voy a tener un controlador......y lo normal es que cada controlador cojera informacion del modelo (que sera unico....pero dividido en archivos)

osea yo tendre una carpeta modelo y dentro d ella tendre un archivo por cada clase. modelo_noticas.php modelo_usuario.php ....... esos php heredaran de una clase OperacionBD que tendra metodos para poder acceder a la BD (consultas,inserts...etc...)

pero yo siempre que necesite datos de la BD o necesite insertar algo en la BD siempre tendra que seguir este orden:
controlador --> clase del modelo --> BD

esta bien eso?

(se me ocurren dos dudas.......si eso que digo esta bien...........el controlador noticias si necesita datos de usuario podrá acceder al modelo_usuario.php , no? es decir, cualquier controlador puede usar cualquier clase del modelo, no?pk como el modelo es unico..... y la segunda duda....k tal veis eso que e dicho de que cada clase del modelo herede metodos de la clase OperacionesBD?)

axias....me tais sirviendo de gran ayuda
  #11 (permalink)  
Antiguo 25/01/2008, 11:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: MVC duda con el modelo

Estas en lo correcto la clase controlador debe de acceder directo a la clase modelo, y esta a su vez hace la consulta a la base de datos.

Esta bien también que tus clases hereden a una clase base que se encargue de abstraer lo que es el acceso a la base de datos.

Saludos.
  #12 (permalink)  
Antiguo 31/01/2008, 06:43
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: MVC duda con el modelo

Buenos dias compañeros hoy amaneci con una nueva duda, como es el pase de variables entre paginas con phpmvc, necesito desplegar una consulta en una pagina pero con un parametro que viene de otra pagina. de antemano gracias.saludos
  #13 (permalink)  
Antiguo 31/01/2008, 08:29
 
Fecha de Ingreso: octubre-2007
Mensajes: 394
Antigüedad: 16 años, 6 meses
Puntos: 2
Re: MVC duda con el modelo

pues si realmente estas usando mvc no creo que te sea muy dificil.
supongo que tendras un controlador general que reciba todas las peticiones de tu web. ese controlador recibira el parametro del que hablas.....y llamara a otro controlador especifico y le mandara dicho parametro. dicho controlador especifico ira al modelo y hara la consulta que tenga que hacer.....y luego dicho controlador creara la vista que tenga k krear....

un saludo
  #14 (permalink)  
Antiguo 31/01/2008, 08:55
 
Fecha de Ingreso: enero-2008
Mensajes: 7
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: MVC duda con el modelo

Gracias compa ya resolvi la guarandinga.
  #15 (permalink)  
Antiguo 01/02/2008, 11:08
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 19 años, 6 meses
Puntos: 43
Re: MVC duda con el modelo

porque no pones la solución así ayudas a otros que puedan tener la misma duda.

salu2
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 13:00.