Aprendiendo y organizando proyectos PHP

 

Hace un año y medio mas o menos que empecé a usar PHP para el desarrollo de páginas web. Aunque el lenguaje realmente no me fue difícil de aprender, lo más problemático fue encontrar un método de trabajo y forma de organizar los archivos y carpetas (código, estilos, imágenes, etc).
Actualmente estoy usando el framework CakePHP, pero antes de usar este framework profesional pasé por varias etapas de investigación y experimentación para encontrar un método de trabajo cómodo y potente.
A continuación cuento un poco cómo era mi forma de trabajo antes de conocer CakePHP:

Modelo Vista Controlador

Desde el primer momento me atrajo la lógica MVC (Modelo Vista Controlador), que aunque no la comprendía en profundidad, sí veía que era una manera muy ordenada de organizar los archivos de un proyecto.
El Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos. El patrón MVC se ve frecuentemente en aplicaciones web, donde la vista es la página HTML y el código que provee de datos dinámicos a la página, el controlador es el Sistema de Gestión de Base de Datos y el modelo es el modelo de datos
Debido a ser novato usando PHP y POO sólo logré implementar "a medias" el MVC, esto quiere decir que no apliqué el Modelo y hay algunas "zonas grises" entre Controlador y Vista.
  • Solución para el Modelo: ninguna, no llegué a comprender este punto.
  • Solución para el Controlador: la lógica de cada pantalla en archivos PHP independientes.
  • Solución para la Vista: para separar la presentación de los datos utilicé la Clase MGTheme de Marioly.

Organización de los archivos de una página web

La manera en que organicé mis páginas web era la siguiente:
  • /clases: accesos a las bases de datos, control del template de pantalla (MGTheme.php), etc.
  • /control: el código que controla cada una de las pantallas de la página web (catalogo.php, inicio.php, etc.)
  • /config: configuracion de las bd, key de googlemap, textos en los distintos idiomas, etc.
  • /descargas: vcards, archivos pdf, etc.
  • /inc: (includes) segmentos de códigos, funciones, etc.
  • /img: las imágenes de la web que forman parte del contenido, no del aspecto visual. Ejemplo: fotos de la empresa, productos, etc.
  • /flash
  • /jscripts
  • /vista: plantillas (.tpl) e imágenes (menús, marcos, fondos).
  • index.php
  • favicon.ico
Mi próximo artículo será sobre el framework CakePHP, donde contaré mi experiencia con este excelente framework (¿librería?) PHP.

Publicar un comentario

0 Comentarios