Ver Mensaje Individual
  #5 (permalink)  
Antiguo 26/12/2014, 11:40
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años, 6 meses
Puntos: 320
Respuesta: ¿Como hacer los modelos?

Cita:
Iniciado por metalfox6383 Ver Mensaje
¿Debería hacer un modelo por tabla o un modelo por controlador?
Ni una ni la otra. Eventualmente puede ser alguna de esas dos, pero no es una regla.

El modelo es lo que maneja la parte fisica y te ofrece las funciones para manejarlo de forma abstracta, esta ligado con la base de datos pero no con su estructura interna. Por ejemplo:
En la base de datos tienes la tabla "facturas" y "facturas_articulos".
El modelo no son 2 clases diferentes, es una sola, "Factura" que debe tener ademas de sus getters/setters los metodos para agregar y quitar artículos, y debe saber también como guardarlos, actualizarlos y borrarlos y leerlos.
Cada tabla en la base de datos, puede no tener ninguno, tener 1 o tener varios modelos asociados, cuando las tablas son grandes y complejas, es comun que aparezcan mas de un modelo que hacen un uso directo de una misma tabla para objetivos diferentes, esto se debe evitar pero hay veces que es necesario, hacerlo no viola para nada el concepto de MVC.

El controlador esta ligado con la funcionalidad, tu puedes querer ver una factura en detalle, ver un listado de todas o bien, ver una factura por cliente determinado, por dar ejemplos.
Para resolver estas funcionalidades, el controlador puede usar 1 o varios modelos, basicamente lo que hace es basarse en funciones del modelo para obtener los datos que el requerimiento funcional le pida.

La vista, esta ligada con la representacion o devolucion de esos datos devueltos por el controlador al usuario final, este usuario puede ser una persona real, otra computadora, otro sistema, etc.
Para cada funcion del controlador, puedes tener 1 o varias vistas, puedes mostrar los datos en json para que los vea javascript, en XML para que lo vea otro programa, o en html para que lo vea una persona, 3 vistas (o mas, o menos) para un mismo controlador.

Modelo -> Datos fisicos
Controlador -> Requerimientos funcionales
Vista -> Representacion de los datos para el usuario final

Cada capa es independiente, porque resuelve problemas totalmente diferentes.

Por cierto, la web no tiene una estructura MVC.
La web tiene una estructura Request-Response, por lo que elegir MVC para hacer sistemas web no es una elección muy acertada.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios