Estoy al principio de mi forma de "aprender MVC". Básicamente, no tengo grandes problemas con la programación orientada a objetos, sin embargo, hay un aspecto técnico que necesita aclaración. Parece que mi teoría no es lo suficientemente buena.Controlador frente a modelo - Necesita explicación
Actualmente, estoy usando marco KohanaPHP, versión 3.
Ejemplo situación: He un sitio web, donde el usuario puede enviar un artículo.
Así que tienen la estructura siguiente:
classes/
/controllers/
article.php
/models/
articles.php
Hasta aquí todo bien. No tengo problemas con los modelos que amplían Kohana_Model, pero no estoy seguro si estoy usando los modelos de forma correcta que usan ORM.
Básicamente cuando uso modelos que extienden Kohana_Model pondré todas las operaciones lógicas en el modelo. ¿Debo hacer lo mismo con los modelos que usan ORM? En muchos ejemplos a través de la red, vi controladores que realizaban operaciones lógicas en la entrada/datos del usuario desde la base de datos, lo cual es incorrecto en mi opinión.
Digamos que necesito obtener algunas filas de la base de datos para crear el método adecuado en el modelo y devolver el objeto. Creo que es correcto, ¿no?
Básicamente, todas las operaciones en la entrada/datos del usuario (seleccionar desde db, insertar en db, validación) Puse en los modelos. Esa es la forma en que entiendo el patrón de diseño de MVC. Los modelos deben ocuparse de todas las operaciones "mecánicas" y el controlador es solo un "puente" entre los modelos/vistas y es un motor "frontal".
¿Es un enfoque correcto?
Sé que podría ser una pregunta tonta para usuarios más avanzados; sin embargo, quiero aprender solo buenas prácticas. Si alguien puede ofrecer alguna aclaración, estaré encantado.
No es una pregunta tonta. El tema es confuso porque el [patrón MVC original no coincide con el procesamiento en las aplicaciones web]] (http://stackoverflow.com/questions/1549857/simple-php-mvc-framework/1549970#1549970). Por lo tanto, no intente encontrar el enfoque "correcto". A menudo es más adecuado utilizar una estructura similar a PMVC, donde el modelo es simplemente la interfaz de base de datos que no tiene conocimiento. – mario