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

Cita:
Iniciado por metalfox6383 Ver Mensaje
Sin embargo, me creas una duda al decir que para las aplicaciones web no es acertado utilizar una estructura MVC. Ojalá puedas explicarnos eso también. Saludos.
La web tiene una estructura Request-Response, un cliente solicita un recurso que tiene nombre y apellido (la url) por algún medio disponible (GET, HEAD, POST, PUT, DELETE, TRACE) pasandole opcionalmente algunos parámetros y espera que el servidor le retorne los datos en un formato especifico.

La "Vista" no es una parte del sistema, la vista es externa, la tiene el cliente, la vista es el navegador o lo que sea que halla del otro lado.

Sin vista, no hay controlador, no al menos con el mismo concepto que lo hay en MVC.

Y, si lo único que hago es responder una solicitud ¿Para que necesito un modelo? si puedo programar para cada tipo de solicitud un script independiente y funcionaria extremadamente rápido.

¿Como plantear un sistema web entonces?
Los requerimientos funcionales son las urls.
Lo que en MVC era el controlador, metido en el medio del sistema, acá son los links y son un extremo del sistema.
Ahí entra a jugar el concepto de Router (Ruteador) que veras en casi cualquier FW, de alguna forma hay que mapear las urls a un procedimiento que las resuelva.
La forma en que se realice dicho mapeo, te proporciona una estructura de trabajo.

Estos procedimientos, dijimos que son independientes unos de otros, pero sin duda habrá partes comunes entre algunos de ellos, esas partes comunes pueden ser extraídas de los procedimientos principales y ser organizadas en un modelo de objetos.
Este modelo tiene un gran diferencia con el concepto de "modelo" que tiene MVC, el modelo aquí es todo lo que se usa en mas de un lugar y que por lo tanto debe ser separado para evitar código duplicado.
Como normalmente lo que se utiliza en todos lados es la base de datos, entra a jugar el concepto de DBAL (Capa de abstracción de la base de datos) que suele automatizar gran parte del problema.
Recuerdo que no hace mucho en este tema se hablo de eso. Aun tengo pendiente una respuesta alli, pero no he investigado y probado aun todo lo que menciona @hhs.

¿Y que hay de la vista? ¿Donde va el html, el json, el xml?
Ahí entra a jugar el concepto de template (plantilla).

Si intentas poner esto a prueba, veras que es mucho mas sencillo que MVC, donde en MVC necesitas 3 clases + 4 interfaces, de esta forma solo necesitas 1 clase (o un archivo con funciones, depende el enfoque que uses) y ademas, esta clase es mucho mas pequeña que las del MVC.

Si te interesa el tema, ya habia hablado de esto antes en otro tema de este foro: http://www.forosdelweb.com/f14/si-co...4/#post4626767 quizás encuentre interesante el hilo ya que hay otras opiniones ademas de la mía que vale la pena leer, ademas de citar a algunos artículos externos sobre el tema.
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios