Me he propuesto aprender Programación Orientada a Objetos, y lo que me interesa es saber aplicar bien los conceptos. Me interesa crear alguna aplicación a modo de practica basada en el patrón Modelo-Vista-Controlador.
Despues de darle bastantes vueltas, he podido sacar mis primeras conclusiones. Me parece importante que en una aplicación MVC las librerías estén separadas de la aplicación. Pero pienso, que aquí entran dos conceptos en juego. La lógica que sigue cada uno en su codificación y la estructura de directorios y archivos, pienso que esta estructura debe ser independiente de la lógica, para así, preservar que el codigo sea mantenible. Por ello lo primero que me ha preocupado es eso... es como si fuesen los cimientos. He pensado en hacer algo así:
Código:
Se que muy provablemente va a ser criticada esta estructura... Pero espero sean criticas constructivas./ - apps - app1 - css - images config.php index.php - libs - models - model1 - model2 - ... - views - view1 - view2 - ... - controllers - controller1 - action1 - action2 - ... - controller2 - action1 - action2 - ... - ...
La explico un poco, cuales son intenciones digamos...
Me gustaría ser capaz de poder crear dentro de "/libs" una serie de modelos, vistas y controladores de forma generica, para que puedan ser usados independientemente por la aplicación.
La aplicación debería comenzar con "/apps/app1/index.php" con los parametros para que el router encuentre los modelos vistas y controladores de la pagina principal y a partir de ahí el router seguiría respondiendo a los eventos y cargando documentos y actuando en consecuencia los demás documentos.
El archivo "/apps/app1/index.php" además debería cargar "/apps/app1/config.php" con una clase "config_app1" por ejemplo, que cargaría los atributos con los valores para la configuración de conexión a la base de datos y los PATHS de relevantes, así como el path de librerías "/libs" de los modelos controladores y vistas, con el único fin de asignar a la aplicación donde están las librerías... de esta forma pienso se pueden independizar la localización de las librerías en cuanto a estructura de directorios. Se me ocurre declarar constantes de clase para asignar estos atributos.
Me gustaría recibir criticas constructivas y también vuestra opinión sobre el archivo config.php Mmmmmm... a la hora de abstraer las clases y de usarlas conjuntamente me lio un poco, por cuestiones de generalización/especificidad o quizá por falta de saber ubicar correctamente las clases. Habia pensado hacer una aplicación que necesitase usuarios, posts, bases de datos como escenario de practica.
Por ultimo termino diciendo que si a alguien que esté interesado en la POO le parece interesante... Me gustaría poder hablar por chat y colaborar en esto con alguien más. Podriamos tener cada uno una estructura así y discutirla, hablar por donde comenzar, seguir, etc...