Estructura de carpetas de CodeIgniter 4

En este post, exploraremos la estructura recomendada para organizar las carpetas en CodeIgniter 4.

La estructura básica de carpetas de una aplicación en CodeIgniter 4 se ve así:

Veamos cada una de estas carpetas con más detalle:

app/

La carpeta app es donde reside toda la lógica de la aplicación. Esta carpeta contiene las siguientes subcarpetas:

  • Config: contiene archivos de configuración para la aplicación. Los archivos de configuración se utilizan para definir variables globales, como la base de datos, los controladores, las vistas, etc.
  • Controllers: contiene los controladores de la aplicación. Los controladores se utilizan para manejar las solicitudes HTTP entrantes y generar respuestas HTTP.
  • Database: contiene los archivos de migración de la base de datos y los archivos de semillas que se utilizan para crear y poblar la base de datos de la aplicación. Los archivos de migración y las semillas permiten a los desarrolladores mantener y actualizar la base de datos de la aplicación de manera eficiente.
  • Filters: contiene los filtros de la aplicación, que se utilizan para realizar tareas como la autenticación, la autorización y la validación de datos antes de que se procesen los controladores.
  • Helpers: contiene archivos de funciones y utilidades que se pueden utilizar en toda la aplicación. Los archivos de ayuda pueden contener funciones comunes como formatear fechas, generar URLs y otras tareas comunes.
  • Language: contiene archivos de idioma para la aplicación, que se utilizan para proporcionar traducciones de texto para diferentes idiomas. Los archivos de idioma permiten a los desarrolladores crear aplicaciones que sean accesibles a una audiencia global.
  • Libraries: contiene clases y objetos que se pueden utilizar en toda la aplicación. Las bibliotecas pueden contener lógica personalizada para realizar tareas específicas en la aplicación.
  • Models: contiene los modelos de la aplicación. Los modelos se utilizan para interactuar con la base de datos y realizar operaciones CRUD (crear, leer, actualizar y eliminar).
  • ThirdParty: contiene bibliotecas de terceros que se utilizan en la aplicación. Las bibliotecas de terceros se pueden instalar a través de Composer o manualmente y se pueden utilizar para ampliar las capacidades de la aplicación.
  • Views: contiene las vistas de la aplicación. Las vistas se utilizan para mostrar los datos generados por los controladores.

public/

La carpeta public es la carpeta raíz de la aplicación. Contiene todos los archivos que se pueden acceder desde el navegador web. Esta carpeta contiene los siguientes archivos y subcarpetas:

  • .htaccess: se utiliza para configurar las reglas de reescritura de URL, las reglas de enrutamiento y otros ajustes importantes del servidor web.
  • index.php: es el punto de entrada de la aplicación. Todas las solicitudes HTTP entrantes se enrutan a través de este archivo.
  • css/: contiene archivos CSS utilizados por la aplicación.
  • js/: contiene archivos JavaScript utilizados por la aplicación.
  • img/: contiene imágenes utilizadas por la aplicación.

tests/

La carpeta tests es dedicada a las pruebas automatizadas de la aplicación. Contiene archivos de código fuente para escribir y ejecutar pruebas automatizadas utilizando el marco de prueba PHPUnit.

writable/

La carpeta writable es donde se almacenan los archivos generados por la aplicación, como registros, cachés, sesiones, etc. Esta carpeta debe tener permisos de escritura para que la aplicación pueda escribir en ella. Algunas de las subcarpetas que se encuentran en esta carpeta son:

  • cache/: contiene archivos temporales generados por la aplicación, como la caché de vistas, la caché de configuración, la caché de rutas y otros archivos de caché utilizados por la aplicación.
  • logs/: contiene archivos de registro generados por la aplicación. Los archivos de registro son útiles para depurar problemas de la aplicación y realizar un seguimiento de lo que está sucediendo en la aplicación.
  • session/: contiene archivos de sesión de usuario creados por la aplicación. Los archivos de sesión se utilizan para mantener la información del usuario entre diferentes solicitudes HTTP.
  • uploads/: es una carpeta donde se pueden subir archivos a través de la aplicación.

vendor/

La carpeta vendor contiene todas las dependencias de terceros que la aplicación necesita para funcionar. Estas dependencias son administradas por Composer, que es un administrador de paquetes de PHP. Es importante tener en cuenta que la carpeta vendor no se incluye en el repositorio de código fuente de la aplicación, ya que se espera que se genere automáticamente a través de Composer.

system/

La carpeta system que contiene el núcleo del framework CodeIgniter 4. Esta carpeta contiene todos los archivos y carpetas necesarios para que la aplicación funcione, incluidos los archivos de configuración, los controladores, las vistas, los modelos, las bibliotecas y otros componentes. La carpeta system es esencial para el funcionamiento de la aplicación y no debe modificarse directamente, ya que esto puede causar problemas de compatibilidad con futuras actualizaciones del framework.

Documentación oficial: https://codeigniter.com/user_guide/concepts/structure.html