0

Configuración básica de Codeigniter 3

Cuando empezamos en este mundo de la programación con PHP, imaginamos que todo es un poco complicado, pero cuando te das cuenta de que existen los framework lo que hacen que puedas programar más rápido y eficiente.

No quiero decir que al programar en PHP puro sea malo, solo que estas herramientas nos ayudan a levantar un proyecto más rápido.

Cuando nos sumergimos en este mundo, solemos buscar tutoriales en YouTube, foros y en otros lados, pero nunca nos enseñan como configurar el framework, por lo cual les traigo como realizar tu primera configuración de Codeigniter 3, para poder levantar un proyecto rápido, hago mención que estas configuraciones son de acuerdo con la experiencia que tenemos desarrollando con esta herramienta.

1.- Descargamos Codeigniter 3

Vamos a ingresar a nuestro buscador y vamos a ir a la siguiente dirección https://www.codeigniter.com/

Una ves dentro del sitio nos vamos a dirigir a la opción de Download y nos va a mandar a otra interfaz donde seleccionaremos que versión de Codeigniter que utilizaremos, para este ejercicio seleccionaremos la versión 3, una ves ubicado volvemos a darle clic al botón de Download.

Nos descargara un archivo .rar, ese archivo es la estructura básica de Codeigniter 3, vamos a descomprimir el archivo y lo vamos a colocar en la carpeta de nuestro servidor local (Xampp, Wampp, etc.)

2.- Configuración

Una ves nuestro proyecto este corriendo en nuestro servidor, y si realizamos los pasos correctamente tendremos que ver la siguiente interfaz.

Ahora como dicen “se viene lo chido” tendremos que abrir nuestro proyecto en nuestro editor de texto de preferencia yo utilizo visual estudio code.

Como podemos visualizar la estructura de Codeigniter 3 es muy ordenada, nosotros nos vamos a concentrar en la carpeta de config.

2.1 Configuración de autoload.php

Este archivo especifica qué sistemas deben cargarse de forma predeterminada. Para mantener el marco lo más ligero posible, solo se cargan los recursos mínimos absolutos de forma predeterminada. Por ejemplo, la base de datos no se conecta automáticamente ya que no se asume si tiene la intención de utilizarla. Este archivo le permite definir globalmente qué sistemas le gustaría cargar con cada solicitud.

Ahora dentro del archivo vamos a buscar lo siguiente autoload['libraries']

$autoload['libraries'] = array();

Estas son las clases ubicadas en system/libraries/ o en el directorio application/libraries/, con la adición de la biblioteca ‘database’, que es un caso especial
Nosotros vamos a colocar los siguientes parámetros database, email y sesiones debe quedar como se muestra en la imagen, estamos haciendo mención que deben carga las librería para la base de datos, los correo electrónico y el manejo de las sesiones.

$autoload['libraries'] = array('database','email','session');

Después de terminar de agregar las librerías, buscamos lo siguiente $autoload['helper'] , a qui cargaremos el helper para el manejo de las url dentro del sistema el cual se carga de la siguiente manera.

$autoload['helper'] = array('url');

Hasta a qui termina la configuración básica del archivo autoload.php

2.2 Configuración de config.php

En este archivo vamos a configurar la base url de nuestro proyecto donde colocaremos la ruta de donde esta cargando nuestro proyecto, NOTA IMPORTANTE recuerden que siempre la url debe terminar con slash “/”

$config['base_url'] = 'http://localhost/nombre_proyecto';

2.3 Configuraciónde database.php

Este archivo contendrá la configuración necesaria para acceder a su base de datos, en este archivo solo vamos a colocarle valores a las siguientes variables:

'username' => 'root',

'password' => '',

'database' => 'nombre_proyecto'

Esta es la configuración básica de este archivo, ahora vamos a ir a crear un archivo conocido como .htaccess para eliminar el molesto index.php que se debe colocar en las url y también para darles permisos a ciertas carpetas.

3.- Creación de. htacccess

Este archvi lo vamos a crear en la raíz de nuestro proyecto con un block de notas y vamos a colocar el siguiente código:

RewriteEngine On
RewriteCond 1$ !^(index.php|images|robots.txt|assets|js)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

Con este código eliminaremos el molesto index.php en la url de nuestro proyecto.

0

5 razones por las que utilizar CodeIgniter

De vez en cuando te encuentras con una entrada en un blog o una discusión en un foro sobre qué framework de aplicación PHP es el mejor. Cada uno tiene sus propios positivos y negativos, pero la verdadera respuesta a esa pregunta es que depende del programador. Cada programador tiene un estilo diferente y prioridades diferentes cuando se trata de adoptar un kit de herramientas para usar al crear aplicaciones. Hoy vamos a tratar los beneficios de utilizar CodeIgniter (CI) con 5 buenas razones:

1. Documentación de primera categoría.

De lejos, la mayor ventaja de CI sobre cualquier otro framework es su documentación. 
La documentación de CI es 10 veces mejor que la de otros frameworks que he encontrado y creo firmemente que es porque CI está respaldado por una empresa y no solo por una comunidad. 

2. Una gran comunidad de usuarios activos.

La última vez que revisé, había más de 57.000 miembros registrados en los foros de CI. Es una gran comunidad de usuarios y enormemente práctica cuando tienes un problema o alguna pregunta en el tintero, además, el sitio web de CI tiene un foro y una wiki donde buscar las respuestas adecuadas. 

3. No es necesaria una «instalación».

Lo creas o no, una de las cosas más difíciles es la instalación de frameworks
No hay necesidad de paquetes PEAR o modificaciones de servidor para poner el framework en funcionamiento. Sólo tienes que subir los archivos a su servidor y te olvidas.

4. Todas las herramientas que necesitas en un mismo paquete

Calendario, correo electrónico, codificación zip, validación, carga, sesiones, pruebas unitarias … eso es sólo algunas de las bibliotecas incorporadas que vienen con CI. También incluye un montón de asistentes predeterminados para cosas como formularios, manejo de archivos, arreglos, cadenas, cookies, directorios y más. Además, por si eso no fuera suficiente, puedes crear tus propias bibliotecas y asistentes o usar código que ha sido desarrollado por la comunidad de CI y publicado en la wiki.

5. Fácil de entender y extender.

Con CI también es fácil escribir nuevas bibliotecas, cambiar el comportamiento de las bibliotecas existentes y simplemente cambiar el comportamiento general del framework con poco esfuerzo.

0

UUID vs autoincremental como clave primaria

Al trabajar con bases de datos como MySql es común utilizar una clave primaría entera autoincremental que permita distinguir y referenciar cada uno de los registros. El problema surge cuando se tienen muchas computadoras remotas escribiendo una gran cantidad de registros al mismo tiempo, en este caso el proceso de inserción sería el cuello de botella ya que la generación de claves, aunque rápida, podría retrasar el ingreso de datos. Si, en cambio, se generan bases por separado para que cada una maneje una carga de inserción menor entonces las claves se repetirían y se perdería la función principal de la clave primaria. Una solución para estos escenarios en la utilización de un UUID como clave primaria.

¿Qué es un UUID?

El UUID, (universally unique identifier) es un número generado de 128 bits. En su forma canónica se expresa como 32 dígitos hexadecimales que son divididos en 5 grupos que al ser separados por guiones da un total de 36 caracteres en total.

Ventajas de utilizar UUID como clave primaria

  • Se garantiza la individualidad de cada clave : Aunque se utilicen varias tables, bases de datos y servidores las UUID seran diferentes.
  • Facilidad de unión de tablas: Si se trabaja en paralelo es posible unir registros o tablas enteras sin generar un conflicto por claves duplicadas
  • Permite la creación de relaciones sin necesidad de esperar a una de las partes: Si la tabla B tiene una relación con la tabla A es posible generar el registro de la tabla B con un UUID y luego agregar el registro en A con el UUID ya generado. En el caso de una clave primaria autoincremental es necesario crear antes el registro A para que pueda asignarse su clave.
  • La creación de claves puede ser externa : Aún trabajando en una misma base de datos la tarea de la creación de la clave puede generarse de manera paralela.

Desventajas de utilizar UUID como clave primaria

  • Ocupan más espacio que una clave autoincremental: Utiliza 128 bytes mientras que un entero utiliza solo 4 bytes.
  • No permiten ordenar rápidamente por fecha de creación: Al utilizar claves autoincrementales el orden se genera automáticamente ya que los números son secuenciales.
  • El proceso de inserción puede ser lento para grandes volúmenes de datos: En algunos experimentos se ha detectado un aumento del tiempo de inserción al aumentar el volumen de datos.

¿Cómo guardar las claves UUID?

Aunque el tamaño de UUID es de 128 bytes es posible utilizar un binario de solo 16 bytes para ahorrar espacio y de esta manera mejorar el rendimiento: Al crear la tabla es necesario especificar que la clave primaria será un campo binario de 16 bytes

CREATE TABLE `nombreTabla`( 
    `clavePrimaria` BINARY( 16 ) NULL ,
    PRIMARY KEY ( `clavePrimaria` ) 
)ENGINE = INNODB ;

Antes de insertar la clave está deberá ser generada y se deberán suprimir los guiones, luego la función UNHEX lo convertitá en binario antes de insertarlo.

INSERT INTO `nombreTabla` 
( `clavePrimaria` ) VALUES ( UNHEX( 'c985098b44b141059a224ca2640d0885' ) 
);

Al obtener la clave se reconvertirá en hexadecimal con la función HEX y la aplicación deberá agregar los guiones de ser necesario.

SELECT HEX(clavePrimaria) AS clavePrimaria FROM `nombreTabla`

Conclusión

La utilización de UUID como claves primarias para base de datos dependerá mucho de la naturaleza de la aplicación, antes de tomar la decisión de no utilizar claves autoincrementales es importante tener en cuenta que la necesidad de una clave única universal no se da en la mayoría de los casos y aunque se plantea como una solución a el problema de la carga en paralelo no es la única disponible.