¿Cuáles son las diferencias entre CodeIgniter 2x y 3x?

Un año después, EllisLab anunció que el desarrollo de CodeIgniter continuaría bajo la dirección del Instituto de Tecnología de Columbia Británica (BCIT). Es BCIT que nos ha traído CodeIgniter 3.

CodeIgniter 3 para cumplir con los siguientes componentes importantes:

  1. Seguridad
  2. Actuación
  3. Integraciones de terceros

1. Seguridad: CodeIgniter 2 frente a CodeIgniter 3
En los últimos años, la seguridad se ha convertido en una gran preocupación para las aplicaciones basadas en Internet. Los hackers no solo desafían los sitios web, sino que también pueden dañar a los usuarios. La mayoría de los principales frameworks y soluciones CMS lanzan parches de seguridad regularmente para garantizar un sistema de seguridad actualizado.

CodeIgniter proporciona funciones de seguridad. El filtrado XSS es un ejemplo. El filtrado XSS generalmente protege de las secuencias de comandos de sitios cruzados mediante el uso de la siguiente función: $ this-> security-> xss_clean ()

CodeIgniter 2.x tenía un error en la función xss_clean. Los usuarios malintencionados ahora pueden omitir la función e inyectar secuencias de comandos entre sitios. Ellis Labs recibió muchas solicitudes para corregir este error, pero no se solucionó hasta que BCIT se hizo cargo y creó CodeIgniter 3.

Con CodeIgniter 3.x, los hackers no pueden omitir la función xss_clean para inyectar XSS. La nueva versión tiene las siguientes actualizaciones:

  • Secuencias de comandos de sitios cruzados
    xss_clean ()
  • Inyecciones de encabezado
    Base_url () recurrirá a $ _SERVER [‘SERVER_ADDR’], cuando $ config [‘base_url’] esté vacío para evitar inyecciones de encabezado de Host.
  • El ayudante CAPTCHA se cambia para usar el PRNG del sistema operativo.
  • Esta nueva versión es más segura que la versión 2.x.

2. Rendimiento: CodeIgniter 2 frente a CodeIgniter 3
queremos que nuestro sitio web funcione bien, gestione la carga de muchos usuarios y les proporcione resultados de búsqueda rápidos. Para cumplir con esta expectativa, el código del sitio web debe ser optimizado.

Las funciones de código deben buscar registros inmediatamente después de realizar una búsqueda. La base de datos juega un papel importante ya que los datos se obtienen de la base de datos a través de consultas personalizadas. En resumen, las funciones de la base de datos proporcionadas por los marcos de código deben escribirse y utilizarse bien.

Cuando se trata de rendimiento, notamos algunos errores con CodeIgniter 2. CodeIgniter 3 ha ayudado al hacer las siguientes mejoras:

  • Biblioteca de almacenamiento en caché: APC, Memcache se ha agregado para mejorar el rendimiento.
  • El método del generador de consultas count_all_results () está arreglado para que no falle incluso cuando se usa la condición ORDER BY.
  • Mejoras en el método de la base de datos.
    simple_query () ha sido corregido. En versiones anteriores, esta función ejecutaba consultas sin verificar si la conexión se había inicializado.
    csv_from_result () se ha optimizado para la velocidad con conjuntos de resultados más grandes .
  • La biblioteca se ha modificado para algunas otras correcciones de rendimiento.

3. Integraciones de terceros: CodeIgniter 2 vs. CodeIgniter 3
Una de las principales necesidades de hoy es llevar la integración de terceros al sitio web de su empresa. Las integraciones pueden incluir datos de CRM de ventas, suscripción de correo electrónico, calendario o cuentas de redes sociales. Estos pueden ser en forma de API, JSON, XML, iFrame o búsqueda directa de consultas. El marco que utiliza para desarrollar el sitio web debe ser lo suficientemente flexible como para admitirlos.

CodeIgniter siempre ha admitido integraciones con bibliotecas de terceros. Esta última versión no es la excepción. CodeIgniter 3 admite varias extensiones de archivos de terceros y bibliotecas del sistema. Los ejemplos incluyen el archivo de calendario ICS, Google Earth (kmz y kml) y PEM. Uno de los principales cambios es el soporte agregado para la configuración de configuración DSN para controladores que admiten cadenas DSN (PDO, PostgreSQL, Oracle, ODBC, CUBRID). Todo esto hace que la aplicación web funcione mejor.

Para más información :

Actualización de 2.2.x a 3.0.x

Hei, yo también estaba buscando lo mismo y encontré las siguientes actualizaciones en codeigniter 3.x
Espero que te ayude

Nuevas opciones de enrutamiento

Se han agregado dos nuevas opciones a las capacidades de enrutamiento, Callbacks y enrutamiento basado en verbos HTTP.

Devoluciones de llamada

Si usa PHP 5.3 o superior, puede usar funciones anónimas para manejar una ruta. Algo como:

$ route [‘pages / (: any)’] = function ($ page_slug) {get_instance () -> load-> model $ data = array (‘page’ => get_instance () -> page_model-> find_by_slug ($ page_slug )); $ this-> load-> view (‘page_wrapper’, $ data); };

Verbos HTTP

Ahora puede especificar rutas específicas de verbo HTTP dentro de su archivo de rutas, sin ninguna solución alternativa. Esto es particularmente útil cuando se compilan aplicaciones RESTful o API. Puede usar verbos HTTP estándar o personalizados (GET, PUT, POST, etc.), agregando el verbo como una clave de matriz a su ruta

$ route [‘productos’] [‘put’] = ‘producto / insertar’;

Minificación de salida

Nuevo en la biblioteca de salida, es la capacidad de minificar Javascript o CSS e incluso su salida HTML.

Reducción de salida HTML

Para minimizar el resultado de su solicitud de página (principalmente eliminando espacios), simplemente configure la configuración de configuración minify_output en el archivo config.php en TRUE.

$ config [‘minify_output’] = VERDADERO;

Minificar JS / CSS

Para minimizar CSS o Javascript, deberá incorporarlo a su controlador de Activos, o de alguna otra manera que elija para administrar sus Activos y generarlos, además de simplemente mostrarlos como archivos estáticos. Esto se hace con el

Salida :: método minify (). $ Styles = $ this-> output-> minify ($ style_content, ‘text / css’); $ scripts = $ this-> output-> minify ($ script_content, ‘text / javascript’);

Si el indicador minify_output, arriba, es VERDADERO, cualquier contenido que se ejecute a través de la clase Salida con cualquiera de los siguientes tipos MIME se minificará antes de enviarse al navegador:

  • texto / html
  • texto / css
  • texto / javascript
  • aplicación / javascript
  • aplicación / x-javascript

Sesiones basadas en controladores

La biblioteca de sesiones se ha modificado para que sea un sistema basado en controladores, lo que permite crear fácilmente sistemas de sesión personalizados, por ejemplo, iniciar sesión en Redis o en una instalación de MongoDB.
Por defecto, CodeIgniter ahora viene con la clase Cookie Driver, que imita el método tradicional que CodeIgniter ha usado, y un nuevo Native Driver que usa sesiones PHP nativas. Cabe señalar que el controlador de cookies todavía admite su almacenamiento en la base de datos.

Otros cambios

La base de código incluye muchos, muchos cambios más pequeños que están en su lugar para mejorar la funcionalidad o corregir errores. Estos son demasiado numerosos para mencionarlos aquí, pero incluyen:

  • Muchas mejoras en la base de datos en todos los controladores.
  • force_download ahora puede descargar un archivo real, no solo una cadena de contenido.
  • las marcas de tiempo ahora son compatibles con los nombres de archivo migraiton.
  • puede cargar automáticamente los controladores
  • puede alias modelos durante la carga automática
  • La biblioteca de entrada incluye input_stream () para recuperar php: // datos de flujo de entrada para una mejor funcionalidad AJAX
  • puede establecer el conjunto de caracteres del documento en el método Output :: set_content_type ().
  • finalmente puede eliminar cosas almacenadas en caché manualmente por la biblioteca de salida.

Ver la lista completa en github

https://github.com/bcit-ci/CodeI
Espero que tenga sentido para sus muchachos y compartiría para que sea para todos.

Cambios generales

  • PHP 5.1.6 ya no es compatible. CodeIgniter ahora requiere PHP 5.2.4 y recomienda usar PHP 5.4+ o posterior.
  • Se modificó la convención de archivos (los nombres de los archivos de clase ahora deben ser Ucfirst y todo lo demás en minúsculas).
  • Cambió el controlador predeterminado de la base de datos a ‘mysqli’ (el antiguo controlador ‘mysql’ está DEPRECADO).
  • $ _SERVER [‘CI_ENV’] ahora se puede configurar para controlar la constante AMBIENTE.
  • Se agregó una traza inversa opcional a la plantilla php-error.
  • Se agregó Android a la lista de agentes de usuario.
  • Se agregó Windows 7, Windows 8, Windows 8.1, Android, Blackberry, iOS y PlayStation 3 a la lista de plataformas de usuario.
  • Se agregó Fennec (Firefox para dispositivos móviles) a la lista de agentes de usuarios móviles.
  • Posibilidad de registrar ciertos tipos de error, no todos por debajo de un umbral.
  • Soporte agregado para pem, p10, p12, p7a, p7c, p7m, p7r, p7s, crt, crl, der, kdb, rsa, cer, sst, csr Certs to mimes.php.
  • Se agregó soporte para archivos pgp, gpg, zsh y cdr a mimes.php.
  • Se agregó soporte para archivos de video 3gp, 3g2, mp4, wmv, f4v, vlc a mimes.php.
  • Se agregó soporte para archivos de audio m4a, aac, m4u, xspf, au, ac3, flac, ogg, wma a mimes.php.
  • Se agregó soporte para archivos kmz y kml (Google Earth) a mimes.php.
  • Se agregó soporte para archivos ics Calendar a mimes.php.
  • Se agregó soporte para archivos rar, jar y 7zip a mimes.php.
  • Soporte actualizado para archivos xml (‘application / xml’) y xsl (‘application / xml’, ‘text / xsl’) en mimes.php.
  • Soporte actualizado para archivos doc en mimes.php.
  • Soporte actualizado para archivos docx en mimes.php.
  • Soporte actualizado para archivos php en mimes.php.
  • Soporte actualizado para archivos zip en mimes.php.
  • Soporte actualizado para archivos csv en mimes.php.
  • Se agregaron caracteres rumanos, griegos, vietnamitas y cirílicos en application / config / foreign_characters.php .
  • Cambió el registrador a solo chmod cuando se creó el archivo por primera vez.
  • Se eliminó la biblioteca SHA1 anteriormente en desuso.
  • Se eliminó el uso desaprobado anteriormente de $ autoload [‘core’] en application / config / autoload.php . Solo las entradas en $ autoload [‘bibliotecas’] se cargan automáticamente ahora.
  • Se eliminó la constante EXT previamente en desuso.
  • Se actualizaron todas las clases para que se escriban en estilo PHP 5, con declaraciones de visibilidad y sin uso de var para las propiedades.
  • Se agregó un controlador de excepciones.
  • Movió plantillas de error a la aplicación / vistas / errores / e hizo que la ruta fuera configurable a través de $ config [‘error_views_path’].
  • Se agregaron plantillas de error que no son HTML para aplicaciones CLI.
  • Movió la clase Log a application / core /
  • Los archivos de configuración global se cargan primero, luego los de entorno. Las claves de configuración del entorno sobrescriben las básicas, lo que permite establecer solo las claves que queremos cambiar por entorno.
  • Se modificó la detección de $ view_folder para que si no se encuentra en la ruta actual, ahora también se buscará en la carpeta de la aplicación.
  • Las constantes de ruta BASEPATH, APPPATH y VIEWPATH ahora se definen (internamente) como rutas absolutas.
  • Se actualizaron los métodos de validación de correo electrónico para usar filter_var () en lugar de PCRE.
  • Se cambiaron los valores predeterminados del entorno para informar todos los errores en el desarrollo y solo los fatales en las pruebas y la producción , pero solo se muestran en el desarrollo .
  • Se actualizaron las longitudes de campo de la base de datos ip_address de 16 a 45 para admitir la dirección IPv6 en Trackback Library y Captcha Helper .
  • Se eliminaron las hojas de referencia y los PDF de referencia rápida de la documentación.
  • Se agregaron verificaciones de disponibilidad donde se requiere el uso de funciones peligrosas como eval () y exec ().
  • Se agregó soporte para cambiar la extensión de archivo de archivos de registro usando $ config [‘log_file_extension’].
  • Se agregó soporte para activar / desactivar la estandarización de nueva línea a través de $ config [‘standardize_newlines’] y establecerlo en FALSE por defecto.
  • Se agregó la configuración de configuración $ config [‘composer_autoload’] para permitir la carga de un cargador automático de Composer.
  • Se eliminó la conversión automática de ‘caracteres programáticos’ a entidades HTML de la Biblioteca URI .
  • Se cambiaron los mensajes de registro que dicen que una clase o archivo se cargó al nivel de “información” en lugar de “depurar”, para que no contaminen los archivos de registro cuando $ config [‘log_threshold’] se establece en 2 (depuración).

Leer más para el registro de cambios de CI 3

Las principales diferencias entre CodeIgniter2 y CodeIgniter3 que

Creo que son:

  • Convención de nombres de archivo de clases (Comience con una letra mayúscula)
  • Biblioteca de sesiones (completamente reescrita. El valor predeterminado es sesión de archivo ahora)
  • Nueva biblioteca de cifrado
  • Uso del filtrado XSS (el filtrado de entrada es incorrecto)
  • El registro activo cambia de nombre a Generador de consultas
  • Composer auto-loader

He usado codeigniter empezado desde la serie 2 y hasta ahora. Pero he notado que el comienzo de la serie codeigniter v3.0, se volvió más lento que la serie v2.0. Y por esta razón, en mi opinión, codeigniter ha perdido una característica muy poderosa, a saber, la velocidad. Y para probarlo, he creado una aplicación simple usando la versión 2, y otra copia de la misma aplicación usando la versión 3 Al cargar la página por primera vez, la versión 2 registró (0.5000) de velocidad, mientras que la versión 3 registrados (1.5000) de velocidad. como viste la diferencia es el doble de veces. Además, cuando actualiza la página por segunda vez, la diferencia sigue siendo la misma, v2.0 registrado (0.3500), v3.0 registrado (0.8000).

Gracias por preguntarme sobre la pregunta. Pero llego tarde para responder, y Dheeraj Thedijje ha resumido las diferencias de una manera bastante buena. Siga el enlace de github para más detalles.

Sí, amigo, echa un vistazo al registro de cambios oficial en Change Log – CodeIgniter 3.0.0-dev documentation