Herramientas de usuario

Herramientas del sitio


informatica:programacion:php:frameworks:codeigniter

CodeIgniter

Framework de PHP.

Las notas están centradas en la versión 4. Para la versión 3, existe otra página.

Modelo Vista Controlador

CodeIgniter sigue el paradigma de programación Modelo-Vista-Controlador.

  • Modelo: datos
  • Vista: resultado visual
  • Controlador: intermediario entre los datos y la presentación.

Además, CodeIgniter sigue el patrón FrontController, es decir, hay un script que en base a lo que le pasemos por URL, enviará la petición al componente adecuado. Esquema:

http://example.com/[clase-controlador]/[metodo-controlador]/[argumentoss]

Por ejemplo:

http://example.com/noticias/ver/10

Controlador

app/Controllers/Pages.php

<?php
 
namespace App\Controllers;
 
use CodeIgniter\Controller;
 
class Pages extends Controller
{
    public function index()
    {
        return view('welcome_message');
    }
 
    public function view($page = 'home')
    {
        // ...
    }
}

Modelo

app/Models

<?php namespace App\Models;
 
use CodeIgniter\Model;
 
class Productos_model extends Model {
 
    //	Los nombres de estas variables son los que
    // define CodeIgniter, hay que usarlos tal cual
    protected $table = 'productos';

Instalación

Requisitos:

  • Versión de PHP 7.3 o superior con las siguientes extensiones:
    • intl
    • mbstring
    • php-json
    • php-mysqlnd
    • php-xml

Se descarga y descomprime en el document root del servidor web.

Tendremos la siguiente estructura de directorios:

app/
public/
system/
writable/

La web se servirá desde el directorio public (es diferente respecto a versiones anteriores del framework)

La carpeta writable debe de ser modificable por el usuario que ejecuta el servidor web.

Docker Compose

Ejemplo de configuración de de infraestructura LEMP para instalar CodeIgniter

La imagen de PHP de Alpine la personalizamos con el siguiente Dockerfile:

FROM php:8-fpm-alpine

RUN apk add --update --no-cache icu-dev oniguruma

# Instalación extensiones PHP
RUN docker-php-ext-install mysqli pdo_mysql intl

# Instalación de Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer

La carpeta /var/www/html/writable (y todo lo que contenga) debe ser accesible para escritura por el servidor web. Si estamos en desarrollo, podemos ir a lo loco y optar por:

chmod 777 -R /var/www/html/writable

Sin embargo, la recomendación es:

chown -R <usuario_servidor_web> /var/www/html/writable

Configuración

Nginx

server{
(...)

    root  /var/www/example.com/public;
    index index.php index.html index.htm;

(...)

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }
...
}

Si estuviese en un subdirectorio, por ejemplo, ci:

server{
...
    location /ci {
        try_files $uri $uri/ /ci/index.php?/$request_uri;
    }
...
}

Para configuración general más habitual, se puede emplear el fichero env en lugar de ir a cada uno de los ficheros. Antes de nada, el fichero hay que renombrarlo a .env.

Poner CodeIgniter en modo desarrollo:

CI_ENVIRONMENT = development
# CI_ENVIRONMENT = production

Establecer la URL del proyecto:

app.baseURL = 'https://mipagina.com/'

Configuración de la base de datos:

database.default.hostname = basedatos:PUERTO
database.default.database = nombre-base-datos
database.default.username = usuario-base-datos
database.default.password = contraseña-base-datos
database.default.DBDriver = MySQLi

Configuración inicial

Abrimos app/Config/App.php y establecemos la URL de base:

public $baseURL = 'http://miweb.com/';

Si vamos a usar una base de datos, abrimos app/Config/Database.php y configuramos:

    public $default = [
	'DSN'      => '',
	'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => '',
	'DBDriver' => 'MySQLi',
	'DBPrefix' => '',
	'pConnect' => false,
	'DBDebug'  => (ENVIRONMENT !== 'production'),
	'charset'  => 'utf8',
	'DBCollat' => 'utf8_general_ci',
	'swapPre'  => '',
	'encrypt'  => false,
	'compress' => false,
	'strictOn' => false,
	'failover' => [],
	'port'     => 3306,
    ];

Fichero env

Podemos establecer ciertas opciones/variables de configuración creando un fichero llamado .env. La instalación de CodeIgniter viene con uno de ejemplo llamado env (sin el punto inicial)

Recursos

informatica/programacion/php/frameworks/codeigniter.txt · Última modificación: por tempwin