# CodeIgniter

CodeIgniter es un framework de desarrollo de aplicaciones web de código abierto y basado en PHP. Fue creado por EllisLab y ahora es mantenido por la comunidad de desarrolladores. CodeIgniter proporciona una estructura ligera y sencilla para desarrollar aplicaciones web rápidas y eficientes, siguiendo el patrón de diseño MVC (Modelo-Vista-Controlador).
Se trata de un framework para aplicaciones web de código abierto para crear sitios web dinámicos con PHP. «Su objetivo es permitir que los desarrolladores puedan realizar proyectos mucho más rápido que creando toda la estructura desde cero, brindando un conjunto de bibliotecas para tareas comunes, así como una interfaz simple y una estructura lógica para acceder esas bibliotecas.»

## Codeigniter 3

CodeIgniter 3 es una versión anterior del framework de desarrollo web basado en PHP, ampliamente utilizado en la comunidad de desarrollo. Ofrece una estructura MVC fácil de usar y características como una biblioteca rica en funciones, soporte para bases de datos, generación de URLs amigables, manejo de sesiones y seguridad integrada. CodeIgniter 3, es usado para aplicaciones web con pocos recursos. es importante tener en cuenta que CodeIgniter 3 ya no está en desarrollo activo y no recibe actualizaciones de seguridad ni mejoras de funcionalidad.

## Codeigniter 4

CodeIgniter 4 es una versión actualizada del conocida framework de desarrollo web basado en PHP. Entre diferencias se encuentran su enfoque basado en namespaces para una organización del código, el soporte para PHP 7.2 y versiones posteriores, aplicaron mejoras en el rendimiento y la seguridad, una nueva estructura de directorios diferente, una sintaxis de enrutamiento nueva, compatible con soporte nativo para Composer, una nueva capa de manejo de eventos.

### PSR/4

CodeIgniter 4 cumple con el estándar PSR-4, que es un estándar de codificación definido por la comunidad de PHP para la autoloading de clases en aplicaciones PHP. Esto significa que CodeIgniter 4 utiliza una estructura de directorios y un sistema de autoloading basado en namespaces que cumple con las especificaciones de PSR-4. En CodeIgniter 4, los controladores, modelos, vistas y otros componentes del framework están organizados en directorios y namespaces siguiendo las convenciones de PSR-4. Esto permite una carga automática eficiente y consistente de clases en toda la aplicación, lo que simplifica la gestión de las dependencias y facilita la reutilización del código en diferentes partes del proyecto.
El cumplimiento de PSR-4 en CodeIgniter 4 también permite en que se instalen y cargen librarias automáticamente mediante el uso de Composer, el gestor de dependencias de PHP. Esto permite a los desarrolladores acceder a la amplia comunidad de paquetes y bibliotecas de PHP disponibles en el ecosistema de Composer para ampliar la funcionalidad. En resumen, el uso del estándar PSR-4 en CodeIgniter 4 ha permitido garantiza una estructura de código organizada y una carga automática eficiente de clases, lo que simplifica la gestión de dependencias y permite una integración más eficiente.

### Extendibilidad

CodeIgniter 4 es un framework permite extender su funcionalidad. Su arquitectura está basada en módulos para ampliar la funcionalidad del framework, como módulos personalizados para autenticación, generación de PDF, integración con APIs externas, entre otros. Aplica una arquitectura de complementos que permite la incorporación de bibliotecas y ayudantes personalizados, y su integración con Composer simplifica la instalación y uso de paquetes externos de PHP. Asimismo, permite una API de extensión que brinda la posibilidad de crear clases y métodos personalizados, lo que proporciona una gran flexibilidad para adaptar el framework a las necesidades específicas de cada proyecto.

### Compatibilidad

CodeIgniter es un framework de desarrollo web en PHP que ofrece diferentes versiones con compatibilidad para distintas versiones de PHP, características y mejoras específicas. Cada versión se adapta a las necesidades y requisitos de desarrollo web, por lo que es importante seleccionar la versión adecuada para tu proyecto y mantenerla actualizada para aprovechar al máximo sus funcionalidades y mejoras. A continuación, se presenta un resumen imparcial de las principales características y compatibilidad de las diferentes versiones de CodeIgniter:
* CodeIgniter 1.x: Es la primera versión del framework y fue lanzada hace varios años. Es compatible con PHP 4 y 5, y ofrece una estructura de directorios simple, un sistema de controladores y vistas, y soporte básico para bases de datos. Sin embargo, no cuenta con muchas de las características y herramientas avanzadas presentes en versiones posteriores.
* CodeIgniter 2.x: Es la segunda versión del framework y es compatible con PHP 5 y 7. Ofrece una estructura de directorios mejorada, un sistema de enrutamiento más flexible, soporte para bibliotecas y helpers, y una amplia gama de características adicionales para el desarrollo web. Es una versión conocida en la web.
* CodeIgniter 3.x: Es la tercera versión del framework y es compatible con PHP 5 y 7 y es considerada una versión estable. Ofrece muchas mejoras en comparación con la versión anterior, incluyendo una mayor seguridad, soporte para la gestión de sesiones, mejor rendimiento y mejoras en la API de base de datos.
* CodeIgniter 4.x: Es la última versión del framework y es compatible con PHP 7.2, 7.3, 7.4 y 8.0 pero a partir de la versión 4.3.1 el equipo de desarrollo ha expulsado a PHP 7.4 eh inferiores con el fin de mantener la seguridad y la viabilidad del proyecto. Ofrece una estructura de directorios y un sistema de autoloading basado en namespaces que cumple con el estándar PSR-4, lo que permite una carga automática de clases eficiente y una gestión de dependencias más avanzada. También ofrece muchas características y herramientas modernas para el desarrollo web, como enrutamiento amigable para SEO, inyección de dependencias, autenticación y autorización, gestión de sesiones, internacionalización, y muchas más.

## Historia

Codeigniter es un framework de desarrollo web basado en PHP que ofrece una arquitectura MVC (Modelo-Vista-Controlador) para crear aplicaciones web dinámicas y escalables. En este artículo, repasaremos la historia de Codeigniter, desde sus orígenes hasta su situación actual, y veremos cómo ha evolucionado a lo largo de los años.
* En 2006 Codeigniter nació como un proyecto de EllisLab, una empresa de software que desarrollaba ExpressionEngine, un sistema de gestión de contenidos (CMS) también basado en PHP. EllisLab quería crear un framework ligero y rápido que facilitara el desarrollo de aplicaciones web sin necesidad de una gran curva de aprendizaje ni una configuración compleja. Así surgió Codeigniter, que se inspiró en otros frameworks como Ruby on Rails o CakePHP, pero con un enfoque más minimalista y flexible.
** Codeigniter se hizo conocida rápidamente entre los desarrolladores PHP por sus características.
*** Una estructura MVC que separaba la lógica de la presentación y permitía una mayor organización y mantenimiento del código.
*** Una biblioteca integrada de funciones y clases que facilitaban tareas comunes como el manejo de bases de datos, sesiones, validación de datos, envío de correos electrónicos, etc.
*** Un sistema de carga automática que cargaba solo los recursos necesarios para cada solicitud, optimizando el uso de la memoria y el tiempo de ejecución.
*** Un sistema de rutas que permitía personalizar las URL de las aplicaciones y mejorar el SEO (Search Engine Optimization).
*** Una comunidad, extensiones y soporte técnico.
* En 2007 Kohana ha creado una rama a partir de CodeIgniter 1.5.4 , como resultado del disgusto de la comunidad por la falta de corrección de errores y el deseo de incorporar otras características demandadas por los usuarios.
* En 2008 también hay que destacar que CodeIgniter es más rápido que muchos otros entornos. Incluso en una discusión sobre entornos de desarrollo con PHP, Rasmus Lerdorf, el creador de PHP, expresó que le gustaba CodeIgniter «porque es rápido, ligero y parece poco un entorno».
* En 2013 el día 9 de julio, EllisLab anunció que estaba buscando un nuevo propietario para CodeIgniter, citando la falta de recursos para dedicarle la atención que consideraban que merecía el framework.
* En 2014 Codeigniter se mantuvo como uno de los frameworks PHP más conocidaes hasta dicha fecha, cuando EllisLab anunció que dejaba de desarrollar y mantener el proyecto. Esto se debió a varios factores, como la aparición de nuevos frameworks más modernos y potentes (como Laravel o Symfony), la falta de actualización del código base de Codeigniter para adaptarse a las nuevas versiones de PHP y las limitaciones del diseño original del framework.
* En 2014 el día 6 de octubre Sin embargo, Codeigniter no desapareció. EllisLab cedió el proyecto a la British Columbia Institute of Technology (BCIT), una institución educativa canadiense que se encargó de continuar con el desarrollo y el soporte de Codeigniter. BCIT creó un nuevo equipo de desarrolladores voluntarios que se dedicaron a mejorar el framework y a lanzar nuevas versiones.
* En 2019 el día 23 de Octubre, en el foro oficial y con la CodeIgniter Foundation asumienron el control, CodeIgniter ya no está bajo el cuidado del British Columbia Institute of Technology.
* En 2020 el día 15 de enero fecha en la que fallece Jim Parry, quien era el gerente del proyecto Codeigniter 4 y el proyecto ahora está siendo continuado por otros gerentes de proyecto.
* En 2020 el día 24 de febrero en la fecha de cumple años de Jim Parry se publica la primera beta de la versión 4 de Codeigniter. Con el lanzamiento de CodeIgniter 4 en 2020, el framework ha experimentado una reescritura completa, manteniendo su filosofía de simplicidad y velocidad, pero adoptando tecnologías y estándares modernos para ofrecer una experiencia de desarrollo aún más eficiente y actualizada.
* En 2021 La versión más reciente de ese año de Codeigniter es la 4.1.4, lanzada en agosto . Esta versión supone un gran salto respecto a las anteriores, ya que introduce cambios significativos en la estructura, la sintaxis y las funcionalidades del framework.
** Un soporte completo para PHP 7.2 o superior, aprovechando sus características más avanzadas como los tipos escalares, las declaraciones de retorno, las clases anónimas, etc.
** Modular que permite dividir las aplicaciones en componentes independientes y reutilizables.
** Autenticación integrado que facilita la gestión de usuarios y permisos.
** Migraciones mejorado que permite controlar los cambios en la estructura de las bases de datos.
** Validación más potente y flexible que permite validar datos tanto en el lado del cliente como en el servidor.
** Eventos que permite ejecutar acciones personalizadas ante determinados sucesos en la aplicación.
** Pruebas unitarias integrado que permite verificar el correcto funcionamiento del código.
* El 2022 el día 28 de noviembre según el equipo desarrollador php7.4 ha sido expulsado de futuras actualizaciones a partir de su versión 4.3.0, del cual a partir es compatible con PHP 8.2. Las versiones más actuales del framework, que pueden ser descargadas desde CodeIgniter o desde GitHub.