Simulador de gestión futbolística

MVC Base

Estructura MVC base reutilizable

development Home PHP 8.5.12 Velocidad x2.45

Lunes

11:35

50/294 8/42
Temporada regular
50 de 294 días de temporada
¿Qué pasa hoy? Día de liga Día de copa Amistosos Entrenamiento Cantera Economía Cierre de temporada
Próximos eventos
20 equipos · 38 jornadas
Recuperación diaria 2026-11-24 03:00:00
en 15h 24m 6h 17m reales
📬 Informe de Ojeadores 2026-11-24 10:00:00
en 22h 24m 9h 8m reales
Liga de Cantera 2026-11-24 18:00:00
en 1d 6h 12h 24m reales
Entrenamiento Pre-Partido 2026-11-27 05:00:00
en 3d 17h 1d 12h reales
Cantera juvenil 2026-11-27 05:30:00
en 3d 17h 1d 12h reales

ChequeoValorNota
Entorno development · debug APP_ENV / APP_DEBUG en .env
Archivo .env /home/donjesco/web/epochsokker.edgedialpremium.lat/public_html/.env detectado OK
APP_KEY definida OK
Base de datos mysql · 11.8.9-MariaDB-ubu2604 OK
Assets/uploads escribible OK
Logs /home/donjesco/web/epochsokker.edgedialpremium.lat/public_html/Logs/app-2026-10-25.log OK
Sesion MVCSESSID OK
PHP 8.5.12 · UTC OK

1 · Controlador

Controllers/Productos.php

class Productos extends Controllers
{
    public function productos() { ... }
    public function ver($id) { ... }
}

productos · productos/ver/12

2 · Modelo

Models/ProductosModel.php

class ProductosModel extends Mysql
{
    public function getAll()
    {
        return $this->select_all('SELECT * FROM productos');
    }
}

$this->model en Productos

3 · Vista

Views/Productos/productos.php

<?php loadView('header', $data); ?>
<h1><?= e($titulo) ?></h1>
<?php loadView('footer', $data); ?>

$this->renderView('productos', $data)

Seguridad
  • Escapa la salida con e(); no escapes la entrada.
  • SQL siempre con placeholders: select_one($sql, ['id' => $id]).
  • Todo POST pide csrf_verify() y el form lleva .
  • Solo son alcanzables los métodos públicos declarados en el controlador.
Utilidades
  • url('health') y asset('css/style.css') con cache-busting.
  • Partials libres: loadView('sidebar', $data) → Views/Inc/sidebar.php.
  • Mensajes: set_flash('success', '...') se muestran solos en el header.
  • Errores: ErrorHandler responde 404/405/500 reales (y JSON si el cliente lo pide).
  • Transacciones: $this->model->transaction(fn) → commit/rollback.

MVC Base 1.0.0 · consultas en este request: 0 · /health