Ver Mensaje Individual
  #11 (permalink)  
Antiguo 27/07/2013, 12:31
Avatar de dashtrash
dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años, 7 meses
Puntos: 270
Respuesta: mvc desde cero

Cita:
Iniciado por oscard41 Ver Mensaje
Buenas tardes a todos, estoy empezando a aprender a programar mvc con php, y me estoy guiando con tutoriales que e encontrado googleando y videos de youtube pero resulta que cada tutorial y cada video que veo es totalmente diferente, en lo único que coinciden es en la teoria pero en la practica cada quien se trae los datos del controlador a la vista diferente....
Como te dice GatorV, MVC, cuando se ha aplicado al desarrollo web, ha quedado en una serie de ideas generales, o incluso una "excusa" que los distintos frameworks que han ido saliendo han interpretado cada uno a su manera.
MVC es un paradigma muy antiguo.Cuando se programaba para Windows 3.1, el primer paso de crear una aplicación era seleccionar si se quería una aplicación SDI o MDI (single/multiple document interface).O sea, si la aplicación tenía subventanas "dentro" (es decir , podías tener múltiples "vistas" del mismo "modelo" a la vez), o sólo una.
En ese entorno, la interacción del usuario se hace sobre las vistas, pasan al controlador, y de ahí al modelo, todo dentro de un mismo proceso en el mismo ordenador.Hay que tener en cuenta también que en este caso, el sistema es muy orientado a eventos.
Suponer que eso es lo que ocurre en un entorno web, es una simplificación muy grande, lo que impide un mapeo evidente del paradigma al desarrollo web.
El problema de algunos programadores es que piensan que MVC es un paradigma creado para el desarrollo web, por lo que suponen que el mapeo de conceptos MVC a funcionalidades de los frameworks, es evidente, asi que cuando ven incoherencias entre frameworks, es que piensan que el problema es que ellos no entienden MVC.
Y no es así, MVC es un paradigma del que actualmente se echa mano, para poner "algún" principio que ordene el caos que siempre ha sido el desarrollo php/web.
Yo entiendo los frameworks MVC de esa forma, como el principio general en el que se basan, pero son tantos los conceptos que existen en el desarrollo web, para los que MVC no da respuesta, que al final los frameworks acaban siendo cada uno su propio mundo, ya que cada uno da respuesta a esos elementos que se quedan fuera, de una forma diferente.

Hay muchos ejemplos de estas incoherencias de MVC, y por qué cosas que se ajustaban muy bien a esa filosofía, hace ya casi 20 años, en el desarrollo web no están tan claras.Sólo por poner uno:
Supongamos una aplicación de escritorio como photoshop.En photoshop puedes tener una imagen duplicada, en 2 ventanas.Eso son 2 vistas del mismo modelo (la imagen).Cuando el usuario hace click sobre una de las imágenes, la vista envía el evento al controlador,y, según la herramienta que tengas activada, hace una operación sobre la imagen, que, al modificarse, dispara un evento para que se actualicen todas sus vistas.
Esta secuencia de operaciones no existe en la web.La vista no tiene ningún control (en el lado del servidor) de las interacciones del usuario.Como mucho, se puede decir que la vista genera una "respuesta".La interacción del usuario en el cliente, se convierte en mensajes enviados a un servidor web que, a su vez, lo envía a PHP.En ningún caso el "interfaz de usuario" envía nada a la "vista".Quién ha originado el mensaje, y quién debe procesarlo, requiere un sistema de enrutado.Además, una vez encontrada la ruta, a diferencia de el caso de photoshop (la vista de una imagen es la imagen), la vista es responsable de recrear *todo* el interfaz de usuario.Eso puede incluir recrear objetos completamente ajenos al modelo asociado a la vista (en el caso más simple, cabeceras, pies, menús, etc,etc).

Como segundo ejemplo, y, sobre todo, con el peso de javascript a la hora de generar interfaces de usuario, cosas como los web services, SOAP, REST, etc, a mí me parece muy evidente que el desarrollo web se podría basar en el paradigma cliente-servidor (cosa que ya lo es, al fin y al cabo..navegador vs servidor web), que no es necesariamente igual a MVC.
Y, por poner otra posibilidad, una implementación de MVC con vista generada en el cliente, es la base del desarrollo de ActiveX.Pero, para hacer esto, la integración de PHP y Javascript tendría que ser mucho mayor, y la programación se haría orientada a componentes, aunque cada uno de esos componentes sea una estructura MVC (esto seria muy bonito...De hecho, existe..Quien esté interesado, que vea los ficheros htc para internet explorer)

Sé que muchas de estas cosas se consideran herejía hoy en día..Pero afortunadamente ya se ven signos de que el paradigma está cambiando.Personalmente, no creo que MVC tal y como está planteado hoy en día, sea un paradigma buenísimo.Pero no dejo de reconocer que sirve para orientar a programadores recién llegados, a los que al menos se les fuerza a estructurar su código en unidades diferentes a "fichero".