Tabla de Contenidos
CodeIgniter
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:
intlmbstringphp-jsonphp-mysqlndphp-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)
