CodeIgniter sigue el paradigma de programación Modelo-Vista-Controlador.
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
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') { // ... } }
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';
Requisitos:
intlmbstringphp-jsonphp-mysqlndphp-xmlSe 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.
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
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
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, ];
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)