Buenas,
Siempre me ha ocurrido que he empezado un proyecto pequeño, y poco a poco le iba añadiendo funciones al mismo archivo... y construía archivos monstruosos. He buscado mucho sobre MVC y POO, pero estoy algo pillado, seguro que ustedes pueden darme el empujón que necesito. Les pongo un ejemplo:
Proyecto de Tienda con un "Modulo" de Productos, otro de Pedidos, otro de Loquesea.
index.php
-> carga un archivo moduloNombreModulo.php dependiendo de la petición.
moduloNombreModulo.php
-> Este se encarga de cargar una classModulo.php y a base de if y elseif recoge las variables introducidas por el usuario, las limpia, y llama a la funcíon correspondiente dentro de la clase.
Digamos que es mi particular controller, pero no es una clase.
classModulo.php
-> Aqui encontramos funciones como addProducto, editProducto... addCategoria, editCategoria... addProveedor, editProveedor..
Cada función dentro de esta clase, realiza las comprobaciones correspondientes a los datos que le pasa desde moduloNombreModulo.php y si esta todo correcto hace lo que deba a través de otra clase encargada de ejecutar consultas a la DB etc.
Después de todo esto, desde moduloNombreModulo.php se ejecuta una función para manejar plantillas, ya que el contenido de vistas esta separado en otra carpeta.
El primer problema que vi es que se va agrandando demasiado la clase, pensé en separar en otras clases mas pequeñas, pero por ejemplo al añadir un Producto, addProducto comprueba si existen las categorias, proveedores, etc. y se reutilizan así funciones compartidas, ya que estas comprobaciones aparecen en casi todas.
Pero ahora me encuentro otro problema más, y es que al crear un modulo de Pedidos (ejemplo), éste necesita de funciones de la clase del otro módulo, como verificar si existe un producto, categoría, añadir un producto en algunos casos desde ese módulo, etc.
Lo que no quiero es tener que incluir e instanciar 4 o 5 clases en cada función dentro de otra clase, no se si a lo mejor estoy yo equivocado y esa es la forma correcta.
Como pensais que debería hacerlo?
Gracias!
Siempre me ha ocurrido que he empezado un proyecto pequeño, y poco a poco le iba añadiendo funciones al mismo archivo... y construía archivos monstruosos. He buscado mucho sobre MVC y POO, pero estoy algo pillado, seguro que ustedes pueden darme el empujón que necesito. Les pongo un ejemplo:
Proyecto de Tienda con un "Modulo" de Productos, otro de Pedidos, otro de Loquesea.
index.php
-> carga un archivo moduloNombreModulo.php dependiendo de la petición.
moduloNombreModulo.php
-> Este se encarga de cargar una classModulo.php y a base de if y elseif recoge las variables introducidas por el usuario, las limpia, y llama a la funcíon correspondiente dentro de la clase.
Digamos que es mi particular controller, pero no es una clase.
classModulo.php
-> Aqui encontramos funciones como addProducto, editProducto... addCategoria, editCategoria... addProveedor, editProveedor..
Cada función dentro de esta clase, realiza las comprobaciones correspondientes a los datos que le pasa desde moduloNombreModulo.php y si esta todo correcto hace lo que deba a través de otra clase encargada de ejecutar consultas a la DB etc.
Después de todo esto, desde moduloNombreModulo.php se ejecuta una función para manejar plantillas, ya que el contenido de vistas esta separado en otra carpeta.
El primer problema que vi es que se va agrandando demasiado la clase, pensé en separar en otras clases mas pequeñas, pero por ejemplo al añadir un Producto, addProducto comprueba si existen las categorias, proveedores, etc. y se reutilizan así funciones compartidas, ya que estas comprobaciones aparecen en casi todas.
Pero ahora me encuentro otro problema más, y es que al crear un modulo de Pedidos (ejemplo), éste necesita de funciones de la clase del otro módulo, como verificar si existe un producto, categoría, añadir un producto en algunos casos desde ese módulo, etc.
Lo que no quiero es tener que incluir e instanciar 4 o 5 clases en cada función dentro de otra clase, no se si a lo mejor estoy yo equivocado y esa es la forma correcta.
Como pensais que debería hacerlo?
Gracias!