Organización de un proyecto en CodeIgniter 4
CodeIgniter 4 es un framework de desarrollo web de codigo abierto, diseñado para facilitar el desarrollo rápido y agil de aplicaciones web en PHP. Trae una gran cantidad de funcionalidades en comparación con el tamaño del framework, es ideal para dar los primeros pasos con el desarrollo de aplicaciones web con frameworks.
Un proyecto en CodeIgniter 4, tiene la siguiente organización la cual explicaremos de manera general el propósito de cada carpeta y archivo:
Carpeta app
Dentro de la carpeta app, es donde reside todo el código de la aplicación y donde nosotros vamos a pasar la mayor parte del tiempo; esta carpeta viene con una estructura de carpetas y archivos predeterminada que funciona bien para muchas aplicaciones. Las siguientes carpetas componen el contenido:
- /Config Almacena los archivos de configuración, son variados, por ejemplo, de la base de datos, validaciones de formularios, emails, filtros entre otros.
- /Controllers Los controladores determinan el flujo del programa; son uno de los tres elementos de nuestro MVC y es el que comunica la vista con el modelo según las reglas que definieramos.
- /Database Almacena las migraciones de la base de datos y los archivos de semillas (seeds) de esto hablamos en otro capítulo.
- /Filters Almacena clases tipos filtros que se pueden ejecutar antes y después de los controladores que especifiques.
- /Helpers Los archivos de ayuda que almacenan colecciones de funciones independientes y que podemos reutilizar fácilmente a lo largo de la aplicación.
- /Language Por aquí definimos archivos para manejar los idiomas de la aplicación.
- /Libraries Clases útiles que no encajan en otra categoría; son esquemas más específicos que las de ayuda/helpers, en las cuales nos podemos apoyar en clases para crear funciones que podamos reutilizar.
- /Models Los modelos no son más que clases que tienen una relación directa entre las tablas con las clases y las columnas con las propiedades de las clases; aquí definimos formatos, estructuras y en esencia la comunicación con la base de datos; este es uno de los tres elementos que corresponden a nuestro MVC.
- /ThirdParty Bibliotecas de terceros que se pueden utilizar en aplicaciones.
- /Views Las vistas componen el HTML que se muestra al cliente y esta es otra de las capas de nuestro MVC; la misma es asignada desde el controlador.
Carpeta system
Esta carpeta almacena los archivos que componen el framework en sí; todas las funcionalidades de nuestro framework radican aquí, por lo tanto, los archivos en la carpeta de system nunca deben modificarse. En lugar de esto, puedes agregar tus funcionalidades mediante helpers (archivos con funciones de ayuda) o crear nuevas clases para proporcionar la funcionalidad deseada.
Todos los archivos de esta carpeta se encuentran en el namespace de "CodeIgniter".
Carpeta public
La carpeta public contiene la parte accesible del navegador de su aplicación web; es la única carpeta que puede ser accedida, y esto es así por cuestiones de seguridad; este es un cambio importante que tenemos con la versión 3 y sigue los mismos pasos que han empleado otros frameworks como Laravel el cual también disponen de esta misma estructura.
Colocar una sola carpeta accesible de manera pública evita el acceso directo a su código fuente. Contiene el archivo .htaccess principal, index.php, y cualquier recurso de la aplicación que agregues, como CSS, JavaScript e imágenes.
Esta carpeta está destinada a ser la "raíz web" de su sitio, y su servidor web estaría configurado para apuntar a ella.
Carpeta writable
Esta carpeta contiene todas las carpetas y archivos en las que podría ser necesario escribir en el transcurso de la vida de una aplicación. Esto incluye archivos y carpetas que genera el propio framework, así como carpetas para almacenar archivos de caché, registros y cualquier carga que pueda enviar un usuario. Esto le permite mantener sus otras carpetas primarias sin escritura como medida de seguridad adicional y con esto evitar la carga y ejecución de códigos no deseados.
Carpeta tests
Esta carpeta está configurada para contener sus archivos de prueba.
No es necesario transferir esta carpeta a sus servidores de producción.
Carpeta docs
Esta carpeta puede que esté o puede que no; depende de cómo obtengas tu copia del framework, contiene una copia local de la guía del usuario de CodeIgniter 4 para que sepas que hacer; no es más que parte de la web de CodeIgniter (sección de documentación) pero en versión pdf.
- Andrés Cruz
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter