Hola, me surgio una duda.. quiza debida a un mal diseño desde el comienzo.. A ver si alguien me puede ayudar o me plantea una solución mejor, ya que a estas alturas con todo el codigo no quisiera meterme a aprender y usar un framework.
Veran estoy desarrollando una aplicación web con php siguiendo el patron MVC.. pero no se si lo estoy usando bien, puesto que no comprendo muy bien cuales son los controladores y los modelos realmente. Además quiero orientarlo a objetos y las clases me lian.
Tengo 3 carpetas para mi proyecto:
-la de vistas donde estan los archivos .php con codigo html que son las que ve el usuario.
-la de controladores, donde estan los archivos como el controladorPrincipal (que es un archivo .php y llama a los distintos controladores) y los demas controladores que son clases, cada uno en su archivo .php, ControladorNoticias, ControladorSugerencias, ControladorUsuarios... estas clases contienen como atributos los de las tablas de la base de datos. Por ejemplo la clase ControladorNoticias tiene como atributos los de la tabla noticias de la base de datos, que son codigo, titular, fecha, cuerpo... y como metodos publicarNoticia, ListarNoticias, ConsultarNoticia, ModificarNoticia... ademas de los getters and setters que los tengo pero no los uso.
- y la de modelos que tambien son archivos .php que contienen clases, GestionNoticias, GestionSugerencias, GestionUsuarios. Por ejemplo GestionNoticias tiene una serie de metodos como registrarNoticia, mostrarCodigoNoticia, modificarNoticia,... en los cuales se realizan las consultas a la base de datos, con su conexion y desconexion.
No se si sera un esquema válido. Además el uso que le doy sería algo asi:
Tengo una pagina principal con un iframe central donde se cargan las noticias.
Veamos el proceso primero para cargar este iframe a mi entender sería:
-se llama al ControladorPrincipal con el nombre del controlador y el método a invocar.. en mi caso ControladorNoticias y método ListarNoticias. Este crea una instancia de la clase ControladorNoticias e invoca el método pedido.
-Se invoca al metodo ListarNoticias de la clase ControladorNoticias
-Este método invoca a otro método de otra clase (la que supongo que sera el modelo), al método mostrarNoticias de la clase GestionNoticias.
Este método genera la consulta, se conecta a la base de datos y extrae los datos necesarios que devuelve al método que lo invoco (ListarNoticias) de la clase ControladorNoticias y desde alli se llama a la vista con los datos para mostrar.
Mi duda es si está bien o mal diseñado. O deberia tener una clase por cada tabla de la base de datos que fuera la que contuviera los atributos, los getters, setters y otros metodos en vez del controlador. (Por ejemplo la tabla Noticias en vez del ControladorNoticias). O es que el controlador ya hace la funcion de esa clase al tenerlo asi diseñado. O si necesitos los dos, que quito de uno y pongo en el otro?
Espero que alguien me saque de mis dudas. Gracias