Search by

versawys / kernel

kriollo

Núcleo del framework versaWYS-PHP: enrutamiento, middlewares, sesión/JWT, Twig, CLI y VersaORM.

v3.10.0 2026-10-16 02:38 UTC

README

Núcleo del framework versaWYS-PHP: enrutamiento, middlewares, sesión con JWT, protección CSRF, rate limiting, Twig, CLI (versaCLI) e integración con VersaORM.

También incluye:

  • contenedor de dependencias optativo;
  • validación con Form Requests;
  • autorización (Gate, Tenant);
  • caché, cola de trabajos y almacenamiento de archivos;
  • un cliente para probar la aplicación sin servidor (Testing\TestClient).

La guía de uso está en documentacion/ del esqueleto.

Este paquete no se usa solo: se instala dentro de un proyecto creado a partir del esqueleto kriollo/versaWYS, que aporta app/, el panel de administración y el frontend.

Requisitos

  • PHP 8.3 o superior con intl, mbstring y pdo
  • Composer 2.2+

Instalación en un proyecto

cd versaWYS
composer require versawys/kernel

index.php y versaCLI del proyecto solo cargan el autoload y llaman al kernel:

require_once __DIR__ . '/versaWYS/vendor/autoload.php';
versaWYS\kernel\App::run(__DIR__);

Usar versaCLI sin escribir php

Una vez por máquina, desde cualquier proyecto:

cp versaWYS/vendor/bin/versaCLI ~/.local/bin/versaCLI

Desde ese momento, versaCLI <comando> funciona en cualquier carpeta de un proyecto versaWYS y usa el versaCLI de ese proyecto.

Actualizar

composer update versawys/kernel
php versaCLI app:check:deploy

Antes de subir de versión mayor, leer UPGRADE.md. Los cambios de cada versión están en CHANGELOG.md.

Desarrollo

Clonar este repositorio junto al esqueleto, con los dos en la misma carpeta:

git clone https://github.com/kriollo/versawys-kernel.git
git clone https://github.com/kriollo/versaWYS.git
cd versawys-kernel && composer install && composer check

# Probar el esqueleto contra este kernel (sin commitear el cambio en composer.json)
cd ../versaWYS
composer config repositories.kernel '{"type": "path", "url": "../versawys-kernel", "options": {"symlink": true}}'
composer require "versawys/kernel:*@dev" -W
composer test

La CI hace lo mismo en PHP 8.3, 8.4 y 8.5. Si el cambio también necesita modificar el esqueleto, se crea en él una rama con el mismo nombre que la del PR del kernel: la CI la usa en vez de main.

Pruebas

composer fixer:all      # corrige y formatea todo, como en los proyectos (ver abajo)
composer check          # formato (mago fmt) + mago lint + pruebas + phpstan: lo que corre la CI
composer test           # PHPUnit: Router, Request, contenedor, validación, autorización, cola, caché, archivos, /up…
composer mago           # linter mago (con mago-baseline.toml)
composer bench          # línea base de rendimiento (ver BENCHMARK.md)
composer mago:analyze   # analizador de mago, opcional (el del CI es phpstan)

Formato. Las mismas herramientas y configuración que vservDigitalizacion, versaSTORE y anima. composer fixer:all corre, en este orden: mago analyze --fix, mago lint --fix, rector (rector.php), php-cs-fixer (.php-cs-fixer.dist.php), Pint y mago fmt. El último paso define el formato, y es lo que revisa la CI (mago fmt --dry-run); por eso no se verifican php-cs-fixer ni Pint por separado. Correrlo dos veces no cambia nada.

Para una biblioteca, rector no convierte métodos estáticos en métodos de instancia (rector.php): cambiaría cómo los usan las aplicaciones. SensitiveParameterTest vigila que el formato no deje un #[SensitiveParameter] sin su use, porque PHP lo ignoraría sin aviso.

mago lint falla solo con hallazgos nuevos: los heredados están en mago-baseline.toml. Al corregir algunos, composer mago:baseline regenera la línea base para que no vuelvan.

La CI también ejecuta composer audit y la suite del esqueleto contra este kernel, que cubre por HTTP lo que necesita un servidor: sesión y JWT, CSRF, CSP, QUERY, app:check:deploy --url. Las pruebas nuevas que no necesitan un servidor van en este repositorio.

Versiones y compatibilidad

  • PHP: 8.3, 8.4 y 8.5, las tres probadas en la CI. Una versión de PHP se deja de soportar solo en una versión mayor del kernel, cuando PHP termina su soporte de seguridad.
  • SemVer: parche = correcciones, menor = funciones nuevas compatibles, mayor = cambios incompatibles. Qué cuenta como API pública está en API.md.
  • Deprecación: antes de quitar algo, pasa al menos una versión menor marcado @deprecated, con su reemplazo en UPGRADE.md. Se elimina en la siguiente versión mayor.
  • Soporte: la última versión mayor recibe correcciones; ver SECURITY.md.

Documentos

Documento Contenido
API.md Qué es estable, qué es interno y qué está deprecado
LIFECYCLE.md Recorrido de una petición, de index.php a la respuesta
UPGRADE.md Cómo actualizar entre versiones mayores
SECURITY.md Soporte, cómo reportar y comportamiento ante fallos
THREAT_MODEL.md Activos, límites de confianza y mitigaciones con su prueba
BENCHMARK.md Línea base de rendimiento
DECISIONS.md Lo que se evaluó y no se implementó, y cuándo revisarlo
ROADMAP.md Plan por pasos, revisión final y límites conocidos
CHANGELOG.md Cambios de cada versión

Licencia

MIT