Pregunta

Hoy en el trabajo alguien intentó convencerme de que:

{$obj->getTableInfo()}

está bien para smarty / mvc / templating porque utiliza un método de objetos. Argumenté que debido a que hace una llamada a la base de datos no tiene lugar para estar allí y debería estar en el controlador (en realidad no usamos MVC). ¿Tengo razón en mi comprensión de las separaciones lógicas que se utilizan en MVC y generalmente en plantillas? ¿O hay algo que me falta?

¿Fue útil?

Solución

Tienes razón. Se equivoca.

Las llamadas a la base de datos, independientemente de la forma, deben estar en el controlador si desea hacer el MVC correctamente.

Obviamente, la gente se preocupa por lo que debería hacer y hace cosas así, pero no es la forma correcta.

Otros consejos

Bueno, no hay " oficial " Reglas o cualquier cosa, pero creo que algo así pertenece al controlador. No hago nada en mi código de vista, excepto las variables de visualización, nada más complejo que un if o un foreach -type loop está permitido. Ciertamente no llama a las funciones que acceden a la base de datos. Todo lo que debe ser cargado por el controlador, la vista solo debe decidir si necesita mostrarlo o no.

Depende de su contexto y alcance realmente.

¿$ obj es el controlador o la capa del modelo? Eso debería responder si es o no válido en mi opinión.

En respuesta a la lectura de las otras respuestas.

El nombre de las funciones en sí mismo pertenece a ser un método getter simple. Puede hacer una llamada a la db a través de una capa de controlador. Lo que yo diría que está bien. Especialmente si usaba alguna forma de caché en la memoria. (es decir, el captador es el colocador, ya que solo desea guardarlo en caché cuando se usa una vez).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top