Estoy tratando de aprender y comprender completamente el patrón de mvc y aprender php al mismo tiempo. Decidí construir un framework básico de mvc que podría usar en varios proyectos más adelante. Después de haber leído muchas publicaciones aquí sobre mvc y acoplamiento entre modelos/vistas/controladores, estoy un poco perdido. Por el momento, tengo entendido que los controladores de aplicaciones web se ocupan de la próxima solicitud del navegador y, si es necesario, llama a los métodos. clases modelo que indican a los modelos que cambien su estado. Luego, el controlador instanciará la clase de vista apropiada que será responsable de mostrar la interfaz. Aquí está la parte que no entiendo ...General en mvc ... ¿debería el controlador pasar datos para ver o ver debería tomarlo directamente del modelo?
Ahora debe pasar controlador objeto de modelo apropiado para ver y la vista debe sacar todos los datos de modelo cuando sea necesario?
o controlador debe tomar los datos de modelo y pasarlo a ver, posiblemente envolviendo todo en un solo objeto envoltorio que ver accederá a los datos de agarre y desde allí?
¿O debería simplemente crear una instancia del modelo apropiado cuando sea necesario y extraer datos directamente del objeto modelo?
Por lo que he leído aquí
http://www.phpwact.org/pattern/model_view_controller
Me inclino por la tercera opción donde el controlador no pasa nada para ver y vistas instancia modelo que necesita. Esto es porque:
vista y el controlador deben tener el mismo acceso a modelar
controladorno debe actuar simplemente como mediador en entre la vista y el modelo.
¿Existe realmente una manera correcta de hacerlo o más bien depende del proyecto? Además, ¿qué enfoque recomendaría a alguien que tenga una comprensión decente de OOP, pero que sea relativamente nuevo en php y no demasiado claro en la arquitectura de mvc? O tal vez debería ir con lo que sea correcto para mí y aprender de mis errores (aunque me gustaría evitarlo);
Ahora, hágamelo saber si mi pregunta no es clara, trataré de explicar mejor entonces ... También leo muchas publicaciones en stackoverflow y numerosos artículos en diferentes sitios, pero aún agradecería ayuda, así que gracias de antemano por todos respuestas
¿Pero qué hacemos si hay necesidad de 2 modelos? No estoy seguro si esto sucede alguna vez o podría ser una mala arquitectura, pero parece un posible caso. – Sliq
Claro. Cuando hablamos de "The View" y "The Model" en singular, en realidad solo nos referimos a las distintas capas. La implementación real podría invocar varias clases/objetos dentro de esa capa. Por ejemplo, "A View" suele ser una colección de múltiples fragmentos parciales que se unen para generar el resultado final. Del mismo modo, a menudo puede utilizar múltiples objetos modelo en el proceso. – troelskn