versawys / kernel
Núcleo del framework versaWYS-PHP: enrutamiento, middlewares, sesión/JWT, Twig, CLI y VersaORM.
Requires
- php: >=8.3
- composer-runtime-api: ^2.2
- ext-intl: *
- ext-mbstring: *
- ext-pdo: *
- firebase/php-jwt: ^7.1
- symfony/mailer: ^7.3 || ^8.1
- twig/cssinliner-extra: ^3.26
- twig/twig: ^3.28
- versaorm/versaorm-php: ^2.1
Requires (Dev)
- carthage-software/mago: ^1.57
- friendsofphp/php-cs-fixer: ^3.95.27
- laravel/pint: ^1.32.1
- phpstan/phpstan: ^2.3.1
- phpstan/phpstan-strict-rules: ^2.1.0
- phpunit/phpunit: ^11.5.57
- rector/rector: ^2.7
Suggests
None
Provides
None
Conflicts
None
Replaces
None
- dev-main
- v3.10.0
- v3.9.1
- v3.9.0
- v3.8.0
- v3.7.0
- v3.6.0
- v3.5.0
- v3.4.0
- v3.3.3
- v3.3.2
- v3.3.1
- v3.3.0
- v3.2.1
- v3.2.0
- v3.1.2
- v3.1.1
- v3.1.0
- v3.0.0
- v2.11.1
- v2.11.0
- v2.10.0
- v2.9.0
- v2.8.0
- v2.7.0
- v2.6.0
- v2.5.0
- v2.4.1
- v2.4.0
- v2.3.0
- v2.2.0
- v2.1.1
- v2.1.0
- dev-dev/paso-8
- dev-feat/paso-8
- dev-docs/roadmap-completo
- dev-feat/fase-e
- dev-feat/cache-cola-almacenamiento
- dev-feat/validacion-autorizacion
- dev-feat/contenedor
This package is auto-updated.
Last update: 2026-10-16 16:04:24 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,mbstringypdo - 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