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

Problema en el diseño de clases y el MVC

Estas en el tema de Problema en el diseño de clases y el MVC en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola, me surgio una duda.. quiza debida a un mal diseño desde el comienzo.. A ver si alguien me puede ayudar o me plantea una ...
  #1 (permalink)  
Antiguo 07/07/2008, 08:33
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Problema en el diseño de clases y el MVC

Hola, me surgio una duda.. quiza debida a un mal diseño desde el comienzo.. A ver si alguien me puede ayudar o me plantea una solución mejor, ya que a estas alturas con todo el codigo no quisiera meterme a aprender y usar un framework.

Veran estoy desarrollando una aplicación web con php siguiendo el patron MVC.. pero no se si lo estoy usando bien, puesto que no comprendo muy bien cuales son los controladores y los modelos realmente. Además quiero orientarlo a objetos y las clases me lian.

Tengo 3 carpetas para mi proyecto:

-la de vistas donde estan los archivos .php con codigo html que son las que ve el usuario.

-la de controladores, donde estan los archivos como el controladorPrincipal (que es un archivo .php y llama a los distintos controladores) y los demas controladores que son clases, cada uno en su archivo .php, ControladorNoticias, ControladorSugerencias, ControladorUsuarios... estas clases contienen como atributos los de las tablas de la base de datos. Por ejemplo la clase ControladorNoticias tiene como atributos los de la tabla noticias de la base de datos, que son codigo, titular, fecha, cuerpo... y como metodos publicarNoticia, ListarNoticias, ConsultarNoticia, ModificarNoticia... ademas de los getters and setters que los tengo pero no los uso.

- y la de modelos que tambien son archivos .php que contienen clases, GestionNoticias, GestionSugerencias, GestionUsuarios. Por ejemplo GestionNoticias tiene una serie de metodos como registrarNoticia, mostrarCodigoNoticia, modificarNoticia,... en los cuales se realizan las consultas a la base de datos, con su conexion y desconexion.

No se si sera un esquema válido. Además el uso que le doy sería algo asi:

Tengo una pagina principal con un iframe central donde se cargan las noticias.
Veamos el proceso primero para cargar este iframe a mi entender sería:
-se llama al ControladorPrincipal con el nombre del controlador y el método a invocar.. en mi caso ControladorNoticias y método ListarNoticias. Este crea una instancia de la clase ControladorNoticias e invoca el método pedido.
-Se invoca al metodo ListarNoticias de la clase ControladorNoticias
-Este método invoca a otro método de otra clase (la que supongo que sera el modelo), al método mostrarNoticias de la clase GestionNoticias.
Este método genera la consulta, se conecta a la base de datos y extrae los datos necesarios que devuelve al método que lo invoco (ListarNoticias) de la clase ControladorNoticias y desde alli se llama a la vista con los datos para mostrar.

Mi duda es si está bien o mal diseñado. O deberia tener una clase por cada tabla de la base de datos que fuera la que contuviera los atributos, los getters, setters y otros metodos en vez del controlador. (Por ejemplo la tabla Noticias en vez del ControladorNoticias). O es que el controlador ya hace la funcion de esa clase al tenerlo asi diseñado. O si necesitos los dos, que quito de uno y pongo en el otro?

Espero que alguien me saque de mis dudas. Gracias
  #2 (permalink)  
Antiguo 07/07/2008, 09:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema en el diseño de clases y el MVC

Hola vera828,

La idea del patrón MVC es separar en 3 capas tu aplicación:
- La capa Modelo, es donde se maneja toda la persistencia de tu aplicación, es decir como se van a guardar tus datos a traves del tiempo.

- La capa del controlador es la capa más simple y se encarga de leer los requests del usuario y decidir que accion / vista va a llamar.

- La capa de acción / vista es la más pesada a mi parecer ya que es donde se maneja toda la aplicación y en lo particular yo divido esta capa en 2 capas más la capa de código PHP y la capa de los templates, esto para separar código de lo que es el HTML.

Como puedes ver MVC es solo un patrón para definir como llevar tu aplicación, por lo que no veo que tu lo sigas al 100%, pero como siempre se ha dicho en el foro, es un patrón, no es una regla o una ley, si tu esquema que estas usando te sirve para tu aplicación continua con ese patrón y en tu siguiente aplicación trata de seguir mas el esquema.

Saludos.
  #3 (permalink)  
Antiguo 07/07/2008, 09:49
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problema en el diseño de clases y el MVC

Gracias por tu respuesta GatorV, si no es mucho inconveniente me podría decir que es lo que me falla para no estar bien 100% con el MVC en orientacion a objetos?
  #4 (permalink)  
Antiguo 07/07/2008, 11:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema en el diseño de clases y el MVC

Si lees mi post detenidamente verás el porque, los controladores no interactuan con el modelo, la capa de la vista es la que interactua con el modelo para poner los datos en pantalla.

Saludos.
  #5 (permalink)  
Antiguo 07/07/2008, 11:45
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problema en el diseño de clases y el MVC

Como asi? Me rompiste los esquemas.
De lo que yo estudie en Ingenieria del Software, las vistas solo pueden interactuar con los controladores. Son los controladores, los que interactuan o con otros controladores, o con los modelos y con las vistas.
Son los encargados de recoger las peticiones de los usuarios a traves de las vistas y pedir los datos al modelo para pasarselos a la vista.
  #6 (permalink)  
Antiguo 07/07/2008, 12:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema en el diseño de clases y el MVC

Link MVC: http://en.wikipedia.org/wiki/Model-view-controller

Si ves el Controlador afecta al modelo y la vista obtiene la información directamente del modelo, no del controlador.

Saludos.
  #7 (permalink)  
Antiguo 07/07/2008, 14:19
Avatar de Lord Kazuky  
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 18 años, 5 meses
Puntos: 5
Respuesta: Problema en el diseño de clases y el MVC

Según como yo lo entiendo (lo cual puede estar equivocado ) El controlador afecta al modelo, pero tiene que haber alguna forma de que actualice la vista. Así por ejemplo, el controlador podría decidir según la naturaleza del evento que lo invoco, cual seria la vista que deba usar.

La vista por su parte no leerá los datos desde el controlador, porque posiblemente el controlador no los tenga (o si los tiene podría ser algo redundante), sino que los leerá directamente del modelo y los adecuará para su presentación (Ej. HTML, XML, CSV, XLS, etc...)

¿Si seria así?, o lo revolví todo. :P
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"
  #8 (permalink)  
Antiguo 07/07/2008, 14:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema en el diseño de clases y el MVC

En efecto Lord Kazuky, es tal y como lo describes la Vista obtiene los datos directo del modelo y el controlador puede o no afectar al modelo con el input del usuario.

Saludos.
  #9 (permalink)  
Antiguo 07/07/2008, 16:29
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problema en el diseño de clases y el MVC

Estoy perdida totalmente, y pensando sobre mi codigo.. si la vista obtiene los datos del modelo.. que pinta el controlador?

De todas formas mi modelo solo tiene metodos que realizan diferentes operaciones sobre la base de datos. Se conectan a ella, crean la consulta, la ejecutan, cierran la conexion y devuelven un array con el resultado.

El que tengo como controlador recoge ese array de resultado, y llama a la vista correspondiente para mostrar los datos, que no es la misma vista que llamo al controlador para pedir los datos.

Si suprimo lo que tengo como controlador tendré que meter la llamada a la vista correspondiente en el modelo. Y si varias vistas utilizan ese metodo del modelo.. donde devolverían los resultados?

Jo no entiendo nada :( y no veo ejemplos claros de codigo.
  #10 (permalink)  
Antiguo 07/07/2008, 19:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema en el diseño de clases y el MVC

Hola vera828,

Si analisas claro el patrón MVC es: El controlador obtiene el "input" del usuario, checa que tareas debe de realizar y afecta al modelo.

Ejemplo: Usuario escribe en un formulario una noticia con los campos: Nombre, Correo, Noticia. El controlador notifica al modelo, e inserta los datos correspondientes en la base de datos.

Eso es solo la capa controlador / modelo. Luego viene la capa Vista / Modelo, ejemplo:

La vista pide los datos al modelo de las noticias, o las noticias recientes, etc., el Modelo le da todas las noticias y la vista los imprime en una tabla.

Ahora con eso puedes ver, el controlador es el que le pasa el "controlador" o "flujo" a la vista, para que la vista le pida los datos al modelo, si el modelo no necesita ser afectado el controlador pasa el control directo a la vista para que la vista obtenga los datos (por ejemplo listar todas las noticias).

Por eso cuando se dibuja se hace un diagrama, de piramide, ya que las 3 capas estan en constante comunicacion.

Saludos.
  #11 (permalink)  
Antiguo 08/07/2008, 01:23
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 20 años
Puntos: 48
Respuesta: Problema en el diseño de clases y el MVC

El controlador le pasa el modelo a la vista.

El objetivo es que el modelo no tenga dependencias del controlador ni de la vista, que el mismo modelo sirva para varios controladores y vistas. Si te fijas en los esquemas nunca el modelo llama a la vista o al controlador.

Por ejemplo, en un blog el modelo puede ser "lista de entradas", en el controlador de la portada cargas el modelo "lista de entradas" para las ultimas 5 entradas publicadas, y cargas la vista "portada" (HTML) pasandole el modelo "lista de entradas" creado en el controlador. Sin embargo, en el controlador del feed RSS, cargas el modelo "lista de entradas" de las ultimas 10 entradas, y cargas la vista "feed RSS" que genera el RSS del modelo.
  #12 (permalink)  
Antiguo 08/07/2008, 08:54
Avatar de Lord Kazuky  
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 18 años, 5 meses
Puntos: 5
Respuesta: Problema en el diseño de clases y el MVC

Por poner un ejemplo: Un Carrito de Compras

1. En una vista hay una lista de productos donde el usuario puede seleccionar algunos para "Comprar"
2. Al presionar un Botón "Comprar", la vista pasa los datos de los productos seleccionados al controlador que procesa el evento o acción "Comprar"
3. El controlador hace los llamados respectivos al modelo (Inventario, Productos, Carrito, etc...) donde se efectúa el proceso de "Compra" y se afectan los datos
4. Una vez finalizado el proceso de compra el controlador actualiza la vista o invoca una nueva.
Creo que aquí es donde se encuentra la duda. El controlador no debería (generalmente) pasarle datos a la vista ya que eso implicaría que este supiera en que formato se van a presentar los datos.
Si la vista es HTML entonces tendría que pasarle los datos en formato HTML pero si después se necesita presentar la misma información en un reporte PDF, entonces, ¿debería hacerse otro controlador?

Como tu (Vera) lo tienes, haría pensar en que tu controlador es especializado en enviar los datos a la vista en un mismo formato. Lo cual pues no es que esta mal, y si de todas formas te sirve y no quieres complicarte podrías dejar así.

La ventaja de hacer que cada capa haga su trabajo respectivo es que puedas agregar funcionalidad extra a tu aplicación sin tener que modificar nada y mas bien agregando (como Bloques Lego).

5. La vista muestra el carrito de compras obteniendo los datos desde el Modelo pero aplicando el formato (HTML) para su presentación.
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"
  #13 (permalink)  
Antiguo 08/07/2008, 12:03
 
Fecha de Ingreso: diciembre-2007
Mensajes: 178
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Problema en el diseño de clases y el MVC

Nota: En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envíe los datos del modelo a la vista.

http://es.wikipedia.org/wiki/Modelo_Vista_Controlador


Al final del punto 4 se lee la nota que puse arriba, por lo tanto lo que hace Vera828 no estaria mal.
  #14 (permalink)  
Antiguo 08/07/2008, 12:55
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años, 6 meses
Puntos: 32
Respuesta: Problema en el diseño de clases y el MVC

Interesante , hace poco tuve la misma discusión y al final hice una encuesta entre colegas que saben más y mi conclusión es (tengo este tema agendado para hacer un post al respecto):

Por defecto, el MVC estándar: es C -> M y C -> V, es decir, el controller recibe las peticiones, decide si tiene que pedir información al Modelo, y luego pasar información a la Vista.

Este es el tradicional y clásico, así lo he corroborado también con colegas que usan otras arquitecturas, principalmente Java.

El punto es, el patrón dice más cosas que esto (lo anterior es lo esencial); también debería poder M -> V y V -> M (sustituir la flecha por "actualizar")
, pero (aquí el dilema), los frameworks para la web basados en lenguajes de scriptings (no hablo de arquitecturas como Java o .Net) y el famoso "stateless" (una vez que el servidor web entrega la página, se olvida de lo ocurrido) no sería posible que ni el Modelo ni la Vista actualizarse directamente.

Nota: si estamos en un entorno de escritorio y la aplicación corre constantemente, otro es el contexto y la comunicación MVC se puede hacer factible en todos los sentidos. De la misma forma si hablamos de una arquitectura como Java, ya que ellos cuentan con más herramientas, como ser, un servidor de aplicaciones, algo que nosotros no tenemos.

En mi caso particular, me acostumbré al "MVC tradicional" y usando Zend Framework (aunque la mayoría de los frameworks hacen lo mismo, incluyendo Ruby On Rails) no me estaba cuestionando más allá.

Ahora que tuve la misma discusión que están teniendo ustedes, lo que se me ocurrió en su momento (y de forma natural ya lo entendía así) como forma de actualizar M<->V (hacia ambos sentidos) es que surjan invocaciones Ajax que lo simulen (principalmente el caso M->V que debería ser una consulta periódica de la V al M para saber si este cambió).

Ese es mi breve resumen y humilde opinión (se aceptan opiniones opuestas con fundamento), pero me entra en duda ahora lo que dice el colega GatorV y cómo hace para que la V actualice el M

PD: hay muchas opiniones al respecto, algunos dice que el MVC que hacemos no es "puro" (por todo lo expuesto) y otros que el MVC no es la mejor solución para el ambiente web, etc, pero lo que quiero dejar en evidencia que esta discusión no es nueva y tampoco hay una sola respuesta / conclusión.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #15 (permalink)  
Antiguo 08/07/2008, 15:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema en el diseño de clases y el MVC

Según lo que tengo entendido la Vista no actualiza el modelo así que la flecha solo es M -> V, es decir la Vista le "dice" al modelo, dame todas las noticias, pero para "afectar" al modelo solo debe de hacerse por el controlador (el envío de una nueva noticia).
  #16 (permalink)  
Antiguo 08/07/2008, 17:08
 
Fecha de Ingreso: junio-2008
Mensajes: 16
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Problema en el diseño de clases y el MVC

Que de respuestas! Muchas gracias a todos. Ya entendi que hay varias opiniones / formas de resolverlo, asi que en principio podia dejar por "valido" mi codigo.. como dice grey.
Pero me gustaria estar bien segura pues en la exposicion del proyecto seguramente preguntaran porque elegí ese patron y como es que lo estructuré. Seguramente en esos momentos me acordare de sus comentarios y podré alegar.. hay varias formas de hacerlo y mucha discusion al respecto, y quedaré bien jeje.

Bueno una cuestion mas, me quedé con: mi controlador principal, que dependiendo del evento que se lanze en la vista llama al controlador correspondiente (mejor, al metodo del controlador correspondiente, porque es una clase), este pide los datos al modelo (cree una nueva clase con varios metodos que piden/mandan los datos a la base de datos) y los resultados se me ocurrió guardarlos en un array de $_SESSION y asi la vista puede recogerlos, si tener que verlos el controlador. Voy bien?
  #17 (permalink)  
Antiguo 08/07/2008, 17:30
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años, 6 meses
Puntos: 32
Respuesta: Problema en el diseño de clases y el MVC

Perdón, tienes razón.

Pasando en limpio es:
  • Existe una asociación directa entre Vista y Modelo, por lo cual la Vista podría pedirle datos al Modelo (lo cual veo difícil hacerlo desde PHP, o por lo menos con Zend).
  • Existe una asociación indirecta entre el Modelo y la Vista, por el cual si el Modelo cambia, la vista debería actualizarse, al estilo patrón Observer (aquí lo veo aplicable con Ajax).
  • Si hay actualización del Modelo, pasaría primero por el Controller.

¿Me falta algo?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #18 (permalink)  
Antiguo 08/07/2008, 21:41
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 21 años
Puntos: 8
Respuesta: Problema en el diseño de clases y el MVC

si necesitan hacer una asociación directa entre Vista y Modelo se hacen con los helperView (Zend soporta helpers en las vistas )
  #19 (permalink)  
Antiguo 08/07/2008, 21:45
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 19 años, 6 meses
Puntos: 32
Respuesta: Problema en el diseño de clases y el MVC

¿Un ejemplo de cómo sería? (ya que estamos)
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #20 (permalink)  
Antiguo 08/07/2008, 22:13
Avatar de Lord Kazuky  
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 18 años, 5 meses
Puntos: 5
Respuesta: Problema en el diseño de clases y el MVC

Bueno, todos estos detalles son interesantes de discutir para que entre todos, logremos al menos una conclusión y podamos orientar nuestro camino

MVC en PHP (según entendí y perdón si soy insistente pero necesito entender... más... ):

1. Cada vez que la Vista necesitara cambiar al Modelo pasaba por el Controlador. (Vista -> Controlador)

2. El controlador invocaba métodos del Modelo con los que actualizaba su estado. (Controlador -> Modelo)

3. El controlador puede hacer dos cosas:

3.1 Pasar los datos del modelo a la vista (ajax, Iframe, Json) cuando solo una parte de la vista cambiaba. (Controlador -> Vista ???)

3.2 Redirigía a una nueva vista la cual lee directamente el Modelo (Accediendo directamente a sus clases y recuperando su estado desde una sesión o desde la BD) y construye la información como la necesita. (Vista -> Modelo)
Entonces al final de cuentas si se podía hacer las dos cosas... :P

Bueno lo del patrón observador (Modelo -> Vista) igual creo que seria con tecnología Ajax o Comet (según se necesite), definiendo algunas Interfaces para la vista.

jeje... creo que todo esto es lo mismo de la respuesta anterior :P Es uno que no entiende algunas cosas hasta que las escribe... (perdón)
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"
  #21 (permalink)  
Antiguo 09/07/2008, 02:49
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 20 años
Puntos: 48
Respuesta: Problema en el diseño de clases y el MVC

Cita:
1. Cada vez que la Vista necesitara cambiar al Modelo pasaba por el Controlador. (Vista -> Controlador)
Es que no veo que la vista tenga que modificar el estado del modelo en ningun caso. Para mi la vista solo puede leer del modelo, no modificarlo. Lo que pasa es que como respuesta a la iteraccion con la vista, se inicia una nueva accion que debe ser procesada por el controlador.

De todas formas, nunca he visto a los patrones de diseño un final, sino como un comienzo. Tu diseño final no debe ser el MVC, sino que el patron te da un diseño inicial que tu luego vas desarrollando. Lo que hacen los frameworks es desarrollar el patron a su forma.

Última edición por DarkJ; 09/07/2008 a las 02:54
  #22 (permalink)  
Antiguo 09/07/2008, 08:41
Avatar de Lord Kazuky  
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 18 años, 5 meses
Puntos: 5
Respuesta: Problema en el diseño de clases y el MVC

Si tienes razón, me di a entender mal, en ese punto.

Ahora solo quedan algunas dudas. ¿Qué problemas o desventajas tendria el patrón MVC?. ¿En que casos (en desarrollo web) no se debería usar este patrón?. ¿Qué seria necesario agregarle o quitarle para mejorarlo?. ¿Qué alternativas hay?. ¿Por qué algunos dicen que el MVC no es la mejor solución para el ambiente web?

Aunque creo que esas respuestas darían para otra discusion en otro Tema de este foro... :P
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"
  #23 (permalink)  
Antiguo 09/07/2008, 09:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Problema en el diseño de clases y el MVC

Creo que todos en si nos estamos liando, la capa de la vista no es en sí Zend_View (aunque engloba a esta), pero si nos vamos a la teoría, la capa de la vista es la capa que se encarga de mostrar el resultado (en GUI un botón, en HTML, la pagina web, XML, Flex, etc.) Pero si nos vamos a la teoría exacta, puede ser un archivo PHP que muestre el HTML.

A lo que quiero ir es la capa de la vista bien puede ser un archivo PHP con un View Helper (por ejemplo Zend_View / Smarty) para separar el código de la vista, por lo que no es necesario limitarnos a que la vista es un template y no puede obtener los datos del modelo directamente.

Hice este diagrama que separa bien lo que a mi parecer es el ideal de MVC en web con PHP:

Simple:


Detallado:


En la capa de la vista ocupamos lo que es el script estandar para obtener los datos del modelo, y luego usamos algún sistema de Templates (Zend_View, Smarty, etc.) para dibujar ya en pantalla el HTML.

Saludos.
  #24 (permalink)  
Antiguo 13/07/2008, 19:40
 
Fecha de Ingreso: julio-2008
Mensajes: 6
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Problema en el diseño de clases y el MVC

Cita:
Iniciado por Vera828 Ver Mensaje
Que de respuestas! Muchas gracias a todos. Ya entendi que hay varias opiniones / formas de resolverlo, asi que en principio podia dejar por "valido" mi codigo.. como dice grey.
Pero me gustaria estar bien segura pues en la exposicion del proyecto seguramente preguntaran porque elegí ese patron y como es que lo estructuré. Seguramente en esos momentos me acordare de sus comentarios y podré alegar.. hay varias formas de hacerlo y mucha discusion al respecto, y quedaré bien jeje.

Bueno una cuestion mas, me quedé con: mi controlador principal, que dependiendo del evento que se lanze en la vista llama al controlador correspondiente (mejor, al metodo del controlador correspondiente, porque es una clase), este pide los datos al modelo (cree una nueva clase con varios metodos que piden/mandan los datos a la base de datos) y los resultados se me ocurrió guardarlos en un array de $_SESSION y asi la vista puede recogerlos, si tener que verlos el controlador. Voy bien?
No creo q guardarlos en un array $_session sea lo correcto. Puedes crear un método en la vista al cual le pasaras 2 argumentos.
Por un lado el nombre del archivo de la vista a mostrar.
Y por el otro un array con los datos recogidos desde el modelo.

Aquí (http://www.jourmoly.com.ar/introduccion-a-mvc-con-php-segunda-parte/) tienes un tutorial que explica bastante bien el MVC "tradicional".
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 17:06.