No me preocuparía demasiado sobre qué clase actualiza a la otra. Cada marco tiene su propia forma de implementar el patrón MVC y la gente discutirá cuál es el más correcto. Como notó, la separación de responsabilidades es el problema principal.
La vista es más que solo una plantilla. Su trabajo es en realidad preparar una plantilla con datos del modelo. El modelo puede haber pasado sus datos a la vista en sí, o tal vez el controlador actuó como intermediario. De cualquier manera, la vista recibe estos datos, los transforma de alguna manera y se los devuelve al usuario en un formato presentable (por ejemplo, HTML … en cuyo caso una “plantilla” es solo un documento HTML con etiquetas PHP que permiten la vista saber dónde poner los datos).
Mientras tanto, el controlador maneja las solicitudes entrantes y actualiza el modelo en consecuencia (por ejemplo, procesa los datos de usuario GET y POST, prepara los objetos del modelo, llama a los métodos del modelo apropiados, etc.). Una vez que se actualiza el modelo, el controlador puede pasarlo a la vista o permitir que el modelo lo maneje solo. De cualquier manera, el controlador está obteniendo información del usuario, y la vista está presentando información al usuario.
- Quiero crear una pila completa de desarrolladores de sitios web, ¿cómo puedo elegirlos y qué debemos hacer primero para ser profesionales algún día?
- ¿Soy la única persona que piensa que jQuery y bootstrap deben colocarse en el compartimento 'no tocar este' del cinturón de herramientas del desarrollador / diseñador?
- Si tengo un sitio web receptivo existente codificado principalmente en html5, CSS y Java (sin php), ¿cómo puedo agregar un blog de wordpress al sitio sin convertirlo en un tema de wp? ¿Hay buena documentación sobre esto? Solo quiero que la sección del blog sea wp.
- Mi sitio está codificado en Cake PHP. ¿Puedo integrar WordPress en mi sitio?
- ¿Cómo escalaría un servicio de generación de número de pedido?
Sin embargo, una aplicación generalmente tiene más de un conjunto de clases de modelo / vista / controlador. La parte difícil es saber qué clases instanciar en primer lugar. Una solución común es usar lo que se llama un “enrutador”. El enrutador es una función que determina qué clases instanciar en función de la URL, ya sea leyendo los parámetros pasados en la propia URL o asignando la URL a alguna lista predefinida de combinaciones de clases.