5

Hace un tiempo pregunté here por ayuda para entender MVC, ya que soy muy nuevo en el tema. Pensé que tenía un entendimiento decente, y esto está documentado en un blog post que escribí recientemente sobre el tema. Mi comprensión básicamente se reduce a esto:MVC: ¿Los modelos y objetos de entidad son conceptos separados?

Controlador: determina qué se debe hacer para cumplir una solicitud y utiliza los modelos que necesita para recopilar/modificar según sea necesario. Básicamente es un gerente para un proceso determinado.

Vistas: Presentación solamente. Una vez que un controlador recopila lo que necesita, crea un tipo específico de vista, le entrega la información y dice "muéstreselo al usuario sin importar cómo lo haga".

Modelos: Comportamiento de la aplicación. Cuando el controlador le pide que extraiga o modifique algo, sabe cómo hacerlo. También sabe desencadenar que otros modelos realicen tareas relacionadas (a mi entender, cuando un modelo intenta "votar por algo" en StackOverflow, ese modelo sabe para preguntar si también se debe otorgar una insignia debido a ello). necesita preocuparse por eso).

Mi pregunta, suponiendo que todo eso sea más o menos exacto, es ¿dónde entran los objetos de entidad? ¿Son los modelos y las entidades lo mismo, con cada objeto sabiendo cómo conservar sus propios datos, o las entidades son un concepto separado que existe por sí mismo y se utiliza en toda la aplicación?

Mi dinero está en este último, ya que esto permitiría a los modelos actuar de forma independiente, mientras que las tres capas (modelo, vista y controlador) podrían utilizar las entidades para pasar datos según sea necesario. Además, los objetos y la persistencia de la base de datos parecen preocupaciones que deberían separarse.

Para ser sincero, cuanto más leo sobre MVC, más confundido me siento. Estoy a punto de tomar el concepto básico (presentación separada de la lógica) y ejecutarlo de la manera que se sienta bien, y no preocuparme demasiado por la etiqueta "MVC".

Respuesta

0

Cada modelo puede ser una entidad que contiene algunos métodos para controlar y utilizar sus datos.
¿Es suficiente?

+0

Lo siento, pero no estoy muy seguro de lo que dices. ¿Podrías reformular eso? – AgentConundrum

+0

realmente lo siento coz de mi inglés ...: P –

+1

Sin preocupaciones. Entonces, ¿estás diciendo que los modelos y las entidades son la misma cosa? Estoy un poco sorprendido por esto, ya que (como dije en mi pregunta) parece que la entidad misma no debería preocuparse por su propia persistencia. – AgentConundrum

5

Sí!

Mi dinero está en la última, ya que esto permitiría a los modelos actúan independientemente

Usted no desea vincular a su fin de una entidad, ya que si el punto de vista también necesita alguna otra pieza de datos, tendrías que hacerlo a tu Entidad. El modelo es totalmente compatible con la vista, y se preocupa por apoyar esa vista y nada más.

Por ejemplo, si muestra una lista de sus entidades, ¿qué otros datos podría necesitar? ¿Número de página actual? Número total de páginas ¿Un mensaje personalizado para mostrar?

Esta es la razón por la que debe vincularse a un modelo, al que puede agregar libremente elementos de datos según sea necesario.

actualización

He aquí una explicación de MVC en acción ...

El controlador obtiene todos los datos necesarios para la solicitud y la pone en el modelo. Luego pasa el modelo a la vista.

La vista luego trata sobre el diseño de los datos en el modelo.

+0

Estaba pensando que un controlador llamaría tantos modelos como fuera necesario para obtener lo que necesita, y los modelos generarían entidades que se pasarían de nuevo al controlador. Cuando el controlador ha recogido lo que necesita, pasa la colección de entidades que el modelo le ha dado, y la vista utiliza estas entidades para generar su resultado. es decir, el controlador pregunta al modelo por una pregunta, quién le da al controlador una entidad de pregunta, quién envía la entidad a ver, que tiene algo como '<? php echo $ question-> getQuestionTitle?>' ie la entidad es la fuente de las vistas datos. ¿Es esto correcto? – AgentConundrum

+0

Voy a volver a explicar lo que acaba de decir en una actualización de esta respuesta ... – Fenton

Cuestiones relacionadas