¿Por qué PHP 8.5+?
TCPDF-Next requiere PHP 8.5+ por diseño. Esto no es una restricción arbitraria — cada funcionalidad moderna de PHP utilizada en la biblioteca beneficia directamente la calidad del código, la seguridad y la experiencia del desarrollador.
Funcionalidades de PHP 8.5 que usamos
| Funcionalidad | Cómo beneficia a TCPDF-Next |
|---|---|
| Clases readonly | Value objects inmutables (PageSize, Margin, Color, FontInfo) — sin bugs de mutación |
| Backed enums | Configuración type-safe (Orientation::Portrait, BarcodeType::QRCode, SignatureLevel::PAdES_B_LTA) |
| Named arguments | Llamadas de API auto-documentadas — setSignature(certInfo: $cert, level: SignatureLevel::PAdES_B_B) |
| Tipos union/intersection | Tipos de parámetros precisos a través de la API |
| Tipos DNF | Restricciones de tipo complejas para validación interna |
#[\SensitiveParameter] | Contraseñas y claves privadas nunca aparecen en stack traces (Aes256Encryptor, CertificateInfo, TsaClient) |
#[\NoDiscard] | Advertencias del compilador si ignoras valores de retorno de métodos críticos (FontManager::registerFont(), FormFlattener::flatten()) |
| Property hooks | Patrones getter/setter limpios sin boilerplate |
| Operador pipe | Transformaciones de datos internas simplificadas |
| Fibers | Base para generación de PDF asíncrona en queue workers |
"Pero mi servidor ejecuta PHP 8.1..."
Usa Docker como capa de aislamiento. Tu aplicación puede ejecutar cualquier versión de PHP — TCPDF-Next se ejecuta dentro de un contenedor.
Dockerfile mínimo
FROM php:8.5-cli
# Instalar extensiones requeridas
RUN apt-get update && apt-get install -y \
libicu-dev libpng-dev libjpeg-dev libwebp-dev \
&& docker-php-ext-configure gd --with-jpeg --with-webp \
&& docker-php-ext-install gd intl
# Instalar Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
COPY . /app
WORKDIR /app
RUN composer install --no-dev --optimize-autoloaderDocker Compose para equipos
services:
pdf-generator:
build: .
volumes:
- ./output:/app/output
command: php generate-pdf.phpLaravel con Docker
Si tu aplicación Laravel ejecuta PHP 8.2 pero necesitas TCPDF-Next, ejecuta la generación de PDF como un microservicio:
services:
app:
image: php:8.2-fpm
# Tu aplicación Laravel
pdf-service:
build:
context: ./pdf-service
dockerfile: Dockerfile
image: php:8.5-cli
volumes:
- shared-output:/output
volumes:
shared-output:O usa el sistema de colas de Laravel para despachar la generación de PDF a un worker PHP 8.5.
La compensación
Al requerir PHP 8.5+, TCPDF-Next gana:
- Código base más pequeño — Las funcionalidades modernas reemplazan cientos de líneas de workarounds
- Seguridad de tipos más fuerte — PHPStan Level 10 con cero errores
- Mejor seguridad —
#[\SensitiveParameter]previene fugas de credenciales en logs - Objetos inmutables — Las clases readonly eliminan una categoría completa de bugs
- Código auto-documentado — Los enums reemplazan strings mágicos, named arguments reemplazan arrays posicionales
La biblioteca que te servirá durante la próxima década debería estar construida sobre las funcionalidades del lenguaje de la próxima década.