15. Apéndices
15.1. Glosario de términos y conceptos
A
- API Layer: Capa de abstracción que contiene los controladores, servicios y DTOs que conforman los endpoints de la API.
- Artesano: Herramienta de línea de comandos similar a Artisan de Laravel, utilizada para generar código y realizar tareas administrativas.
- AuthMiddleware: Middleware encargado de verificar la autenticación de usuarios en las peticiones.
B
- BaseModel: Clase abstracta que proporciona la funcionalidad básica para todos los modelos del sistema.
- BaseModelPool: Implementación de BaseModel para trabajar con modelos simples del sistema Quartup.
- BaseModelTree: Implementación de BaseModel para trabajar con modelos relacionales complejos del sistema Quartup.
C
- Config: Sistema de acceso a configuraciones mediante archivos PHP organizados por función.
- Controller: Componente responsable de recibir peticiones HTTP y devolver respuestas apropiadas.
- CoreQuartup: Clase que encapsula la comunicación con el sistema legacy de Quartup.
D
- Domain: Concepto que representa un área funcional del negocio (ej. Products, Carts, etc.).
- DomainController: Controlador base para implementar el patrón de Controlador de Dominio.
- DomainService: Servicio base para implementar el patrón de Servicio de Dominio.
- DTO (Data Transfer Object): Objeto utilizado para transferir datos entre subsistemas, transformando datos entre el formato de la API y el formato interno.
E
- ENVIRONMENT: Constante global que define el entorno actual de ejecución (DEV o PROD).
F
- Filters: Sistema de filtrado mediante JSON que permite crear consultas complejas a la base de datos.
I
- Infrastructures: Capa que contiene la implementación de acceso a datos y la comunicación con sistemas externos.
- InterfaceReqDTO: Interfaz para los DTOs de entrada (request).
- InterfaceResDTO: Interfaz para los DTOs de salida (response).
L
- Legacy: Término que se refiere a sistemas existentes con los que el framework debe interactuar.
- Log: Sistema de registro de actividades, errores y transacciones.
M
- Mapper: Componente que traduce entre el formato de datos de la API y el formato interno.
- Middleware: Software que actúa como intermediario entre diferentes componentes del sistema.
- Module: Agrupación de dominios relacionados que forman una unidad funcional mayor.
P
- PPos: Módulo del sistema legacy correspondiente a punto de venta.
- PMaes: Módulo del sistema legacy correspondiente a maestros de datos.
- Permut: Módulo específico de la API para ciertas funcionalidades.
Q
- QueryBuilder: Sistema para construir consultas SQL de manera dinámica y segura.
- QuApp: Clase principal que gestiona el estado global de la aplicación.
- QuContainer: Implementación del patrón de contenedor de inversión de control (IoC).
- QuErrorsToException: Sistema para convertir errores PHP en excepciones manejables.
- QuKernel: Núcleo del framework, responsable de coordinar el ciclo de vida de las peticiones.
- QuRouter: Sistema de enrutamiento que conecta URLs con controladores.
R
- Repository: Componente que encapsula la lógica de acceso a datos para un modelo específico.
- ReqDTO: Implementación concreta de DTO para procesar datos de entrada.
- ResDTO: Implementación concreta de DTO para formatear datos de salida.
- Router: Sistema que determina qué controlador y método deben manejar una petición HTTP.
- Request: Objeto que encapsula la solicitud HTTP entrante, basado en Symfony HttpFoundation.
- Response: Objeto que encapsula la respuesta HTTP saliente, basado en Symfony HttpFoundation.
S
- Service: Componente que contiene la lógica de negocio principal de un dominio.
- SwitchUtf8Latin1: Utilidad para manejar la conversión entre codificaciones de caracteres.
T
- TPV: Módulo específico para Terminal Punto de Venta.
- Transaction: Registro detallado de una operación realizada a través de la API.
- TransactionMiddleware: Middleware que gestiona el registro de transacciones.
15.2. Dependencias y bibliotecas de terceros
El framework utiliza un conjunto mínimo de dependencias externas para proporcionar funcionalidades específicas:
Dependencias principales
-
symfony/console (v4.4.49)
- Utilizado para implementar el sistema de comandos "Artesano".
- Proporciona la infraestructura para crear comandos CLI como
CreateDomainCommandyCreateLegacyInfraestructureCommand. - Código relacionado:
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
-
symfony/http-foundation
- Proporciona las clases
RequestyResponseque el framework extiende. - Implementa funcionalidades HTTP de bajo nivel para manejo de peticiones y respuestas.
- Código relacionado:
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
- Proporciona las clases
-
JWT
- Biblioteca para manejo de JSON Web Tokens.
- Utilizada para la implementación de autenticación basada en tokens.
- Código relacionado:
$token = \JWT::encode($payload, $privateKey, 'RS256');
$decoded = \JWT::decode($token, $clavePublica, $ar);
Dependencias de sistema legacy
-
QnoSession
- Biblioteca del sistema Quartup para manejo de sesiones.
- Utilizada en la inicialización:
$arrayQuartup_ini_php = (new QnoSession)->getQuartupIni();
-
QU_Basic
- Biblioteca principal del sistema Quartup.
- Código relacionado:
use QU_Basic as Basic;
-
QU_TablePool
- Biblioteca del sistema Quartup para manejo de tablas.
- Código relacionado:
use QU_TablePool as Pool;
-
QU_Sql
- Biblioteca del sistema Quartup para operaciones SQL.
- Código relacionado:
use QU_Sql;
-
QtableTree
- Biblioteca del sistema Quartup para trabajar con estructuras de datos relacionales.
- Código relacionado:
use QtableTree;
class QuTree extends QtableTree { ... }
Extensiones PHP requeridas
El framework hace uso de varias extensiones estándar de PHP:
-
JSON
- Para codificación y decodificación de datos en formato JSON.
- Usado extensivamente en los filtros, respuestas y configuración.
-
PDO
- Utilizada para operaciones de base de datos, particularmente en el middleware de rate limiting.
-
MBString
- Utilizada para manipulación de strings con soporte para caracteres multibyte.
- Código relacionado:
function_exists('mb_strlen')
mb_strlen($value)
-
OpenSSL
- Utilizada indirectamente por JWT para operaciones criptográficas con claves públicas/privadas.
- Los archivos de claves se almacenan en
/keys/.
-
Session
- Utilizada para manejo de sesiones de PHP.
- Configuración específica:
ini_set('session.use_cookies', '0');
El framework mantiene un enfoque minimalista en cuanto a dependencias externas, aprovechando al máximo las capacidades nativas de PHP y reutilizando componentes del sistema legacy Quartup cuando es apropiado.