Es muy importante al trabajar con CodeIgniter 4 comprender como se estructura de forma predeterminada nuestra aplicación en una instalación nueva.
Directorios predeterminados
luego de la Instalación de CodeIgniter 4 en la raíz de la aplicación nos encontraremos con 5 directorios, los cuales cuentan con un papel muy importante en nuestra aplicación que se estructuran de la siguiente forma.
App
El directorio App es donde reside todo el código necesario para la aplicación y cuenta con varios directorios en su interior, se estructura de la siguiente forma
Config/: directorio donde se almacenan todos los archivos de configuración esenciales para el correcto y optimo funcionamiento de la aplicación, por ejemplo los archivos App.php(archivo de configuración de la aplicación), Routes.php(archivo de configuración donde se establecen las rutas de la aplicación),Database.php(archivo de configuración donde se establece la base de datos o bases de datos a usar en la aplicación) se encuentran aquí.
Controllers/:Directorio donde se definen los controladores para la aplicación.
Database/:Almacena las migraciones de las bases de datos y los archivos semilla.
Filters/: Almacena las clases filtros que pueden ejecutarse antes y después del los controladores.
Helpers/:Almacena una colección de helpers dicho de otra forma colección de funciones independientes que pueden facilitar el trabajo del desarrollador.
Language/:Almacena el soporte para idiomas de la aplicación.
Libraries/:Una colección de clases que puede utilizar para agregar funcionalidad a su aplicación. La biblioteca en sí no es una parte central de CodeIgniter y puede eliminarse o actualizarse según sea necesario.
Models/:Almacena los modelos que funcionan con la base de datos de la aplicación.
ThirdParty/:Almacena bibliotecas de terceros que se pueden utilizar en la aplicación.
Views/: Almacena las vistas con las que interactúa el usuario.
System
Este directorio almacena los archivos que componen el propio marco del framework, si bien tiene mucha flexibilidad en cómo usa el directorio de la aplicación, los archivos en el directorio del sistema nunca deben modificarse. En su lugar tiene que ampliar las clases o crear nuevas clases para proporcionar la funcionalidad deseada.
Public
La carpeta pública contiene la parte de su aplicación web accesible al navegador, lo que impide el acceso directo a su código fuente. Contiene el archivo .htaccess principal, index.php , y cualquier recurso de aplicación que agregue, como CSS, JavaScript o 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.
Writable
Este directorio contiene todos los directorios necesarios para escribir durante la vida de una aplicación. Esto incluye directorios para almacenar archivos de caché, registros y cualquier carga que un usuario pueda enviar. Debe agregar aquí cualquier otro directorio en el que su aplicación deba escribir. Esto le permite mantener sus otros directorios principales sin escritura como medida de seguridad adicional.
Tests
Este directorio está configurado para contener sus archivos de prueba. el directorio _support contiene varias clases simuladas y otras utilidades que puede utilizar mientras escribe sus pruebas. No es necesario transferir este directorio a sus servidores de producción.
CodeIgniter 4 es framework MVC que sigue el patrón de arquitectura Modelo-Vista-Controlador (MVC), lo que significa que separa la lógica de la aplicación en tres componentes principales: el Modelo (la capa de acceso a datos), la Vista (la capa de presentación) y el Controlador (la capa de lógica de negocio). ademas a diferencia de otros frameworks MVC más robustos, Por lo tanto CodeIgniter es conocido por ser ligero y flexible, lo que lo hace ideal para proyectos pequeños y medianos donde la simplicidad y el rendimiento son prioritarios.
Principales características
Instalación y Configuración Sencillas: CodeIgniter es fácil de instalar y configurar. No requiere de una estructura de directorios complicada ni de una configuración tediosa. Simplemente descargas los archivos, configuras una vez tu archivo de configuración y estás listo para empezar a desarrollar.
Librerías y Helpers Incorporados: CodeIgniter proporciona una serie de librerías y helpers integrados que facilitan tareas comunes como el manejo de formularios, la validación de datos, el envío de correos electrónicos, el manejo de sesiones, la manipulación de imágenes, entre otros. Esto permite a los desarrolladores ser más productivos y escribir menos código repetitivo.
Seguridad Incorporada: La seguridad es una preocupación importante en cualquier aplicación web. CodeIgniter incluye características de seguridad integradas, como la protección contra ataques de tipo XSS (Cross-Site Scripting) y CSRF (Cross-Site Request Forgery), así como herramientas para la validación de formularios y la protección de datos sensibles.
Documentación Completa y Activa Comunidad: CodeIgniter cuenta con una documentación completa y bien estructurada que facilita el aprendizaje y la referencia para los desarrolladores. Además, tiene una comunidad activa que proporciona soporte, comparte recursos y contribuye con extensiones y mejoras al framework.
Flexibilidad y extensibilidad: Aunque CodeIgniter viene con muchas características útiles fuera de la caja, también es altamente extensible. Los desarrolladores pueden integrar fácilmente bibliotecas de terceros o crear sus propias extensiones para adaptarse a las necesidades específicas de sus proyectos.
Ejemplo Hola Mundo
Paso 1. Creamos nuestra vista, nos dirigimos a el directorio de nuestro proyecto hasta la el directorio app/Views que es donde se almacenan todas las vistas de nuestros proyectos como y creamos la un archivo holaMundo.php.
Paso 2. Creamos nuestro controlador, debemos recordar que el controlador es quien decide por así decirlo la acción que nuestra aplicación ejecutara según la petición del usuario, estos los crearemos en el directorio app/Controllers, creamos el archivo Micontrolador.php.
<?php
//usamos el espacio de nombre controllers.
namespace App\Controllers;
//
use CodeIgniter\Controller;
/**
Creamos nuestra clase con el mismo nombre del archivo Micontrolador.php y
extenderemos del BaseController.
**/
class Micontrolador extends BaseController
{
//Creamos un método publico llamado holaMundo donde retornamos la vista holaMundo.php.
public function holaMundo()
{
//Retornamos nuestra vista.
return view('holaMundo');
}
}
Paso 3. Definimos nuestra ruta y para eso editaremos nuestro archivo Routes.php que se encuentra en el directorio app/config añadiendo la siguiente línea
$routes->get('hola','Micontrolador::holaMundo');
Nuestro archivo de Routes.php nos quedara de la forma
Listo ya tenemos nuestro hola mundo con CodeIgniter 4 nos dirigimos al navegador y escribimos la url de nuestro proyecto
http://localhost/ci/public/hola
Siendo nuestro resultado final este.
Conclusion
En resumen, CodeIgniter es una opción popular para desarrolladores de PHP que buscan un framework ligero, fácil de usar y altamente funcional para construir aplicaciones web rápidas, seguras y escalables. Su enfoque en la simplicidad y la eficiencia lo hace especialmente adecuado para proyectos de tamaño mediano y pequeño.
Uno de los primeros errores que puedes encontrar al trabajar con CodeIgniter en Linux es el mensaje: “Cache unable to write to «/var/www/html/ci/writable/cache/»”. Este problema es común para los nuevos usuarios de CodeIgniter en Linux, aunque no tanto en Windows.
¿Por qué ocurre este error?
La causa principal de este error son los permisos de directorios en Linux. Dependiendo de la distribución que uses (Ubuntu, Debian, Mint, Arch, Fedora), el servidor web puede tener diferentes nombres (por ejemplo, en Fedora se llama httpd en lugar de apache).
Como Solucionarlo?
La solución es otorgar permisos de escritura y lectura al usuario del servidor web para el directorio writable de el proyecto CodeIgniter.
pero que es el usuario del servidor web?
la respuesta es «una cuenta de usuario en el sistema operativo que se utiliza para ejecutar el servicio de apache. Este usuario tiene permisos específicos y limitados para garantizar la seguridad del servidor web».
necesitamos otorgarle permisos de escritura y lectura al usuario del servidor web, del el directorio writable de nuestro proyecto de CodeIgniter,para ello lo asignaremos como el propietario del directorio writable y le concederemos los permisos de escritura y lectura.
Asignar al www-data como propietario del directorio writable
Basta con ejecutar el siguiente comando en nuestra terminal de Linux.
El comando chmodsirve para cambiar los permisos de un archivo o carpeta. Para usarlo, solo tienes que decir qué permisos quieres y a qué archivo o archivos se los quieres cambiar.con el 755 como configuración de permisos El dueño de la carpeta puede hacer lo que quiera con ella. Los demás solo pueden ver lo que hay dentro, pero no pueden añadir ni borrar archivos. Este tipo de configuración es común para carpetas que quieres compartir con otros.
En este tutorial, aprenderás a configurar un VirtualHost en Apache para tu proyecto de CodeIgniter. Un VirtualHost te permite acceder a tu proyecto a través de un dominio personalizado en lugar de usar la dirección IP o una ruta larga. Sigue estos pasos:
Paso 1: Crear proyecto de CodeIgniter 4 usando composer
En este paso se debe tener en cuenta que se debe contar con los permisos necesarios para la creación de nuestro proyecto dentro del directorio /var/www/ en ubuntu,debian o en alguna de las distribuciones derivadas de estas.
le asignaremos los permisos necesarios de la siguiente forma
Asignar a nuestro usuario como propietario del directorio /var/www/
sudo chown grupodelusuario:usuario -R /var/www
con este comando se le asigna al usuario ser el propietario del directorio,hay que remplazar el grupodelusuario por el grupo al que pertenece el usuario con el que se esta trabajando y remplazar usuario por el nombre de nuestro usuario.
Asignar permisos de escritura y lectura a el directorio /var/www
sudo chmod 755 /var/www/
de esta manera le asignamos los permisos a el propietario de escritura y lectura,mientras que los demás usuarios solo puede ver los archivos nada mas.
Crear el proyecto de CodeIgniter 4 usando composer
para eso solo basta que nos dirijamos desde la terminal hasta el directorio /var/www y ejecutamos el siguiente comando.
de esta manera ya tenemos instalado y creado nuestro proyecto de CodeIgniter 4 en nuestro servidor.pero no podemos probar aun ya que debemos configurar nuestro virtual host.
Paso dos:Crear el archivo de configuración del VirtualHost
para este paso debemos crear un archivo de configuración en el directorio /etc/apache2/sites-available y lo llamaremos mi_proyecto.conf.
Nos dirigimos al directorio de configuración de apache
cd /etc/apache2/sites-available/
Creamos el archivo mi_proyecto.conf,podemos utilizar el editor de nuestra preferencia,podemos remplazar nano por vim,emacs,gedit,xed,featherpad o el editor de nuestra preferencia
sudo nano mi_proyecto.conf
Añade lo siguiente al archivo configuración que estamos creando :
Modificando el archivo host permitiremos que nuestro dominio personalizado apunte a nuestro servidor local,de esta manera cuando ingresemos mi_proyecto.local en nuestro navegador apuntara a nuestro proyecto.
nos dirigimos al el directorio /etc/
cd /etc/
abrimos el archivo hosts
sudo nano hosts
añadimos la siguiente linea a nuestro archivo hosts
127.0.0.1 mi_proyecto.local
Paso 4: Habilitar el nuevo VirtualHost:
Para habilitar nuestro nuevo virtualhost debemos ejecutar el siguiente comando .
sudo a2ensite mi_proyecto.conf
Ahora que ya habilitamos nuestro nuevo host solo basta con reiniciar nuestro servidor apache.
sudo systemctl restart apache2
Paso 5: Comprobar el correcto funcionamiento de nuestro VirtualHost
para ello hay que asignarle permisos de escritura y lectura a la carpeta /writable de nuestro proyecto,para ello ejecutamos los siguientes comandos
Asignamos a www-data como propietario del directorio writable de nuestro proyecto