Por que PHP 8.5+?
O TCPDF-Next requer PHP 8.5+ por design. Isso não é uma restrição arbitrária -- cada recurso moderno do PHP usado na biblioteca beneficia diretamente a qualidade do código, segurança e experiência do desenvolvedor.
Recursos do PHP 8.5 que Utilizamos
| Recurso | Como Beneficia o TCPDF-Next |
|---|---|
| Readonly classes | Value objects imutáveis (PageSize, Margin, Color, FontInfo) -- sem bugs de mutação |
| Backed enums | Configuração type-safe (Orientation::Portrait, BarcodeType::QRCode, SignatureLevel::PAdES_B_LTA) |
| Named arguments | Chamadas de API auto-documentáveis -- setSignature(certInfo: $cert, level: SignatureLevel::PAdES_B_B) |
| Union/intersection types | Tipos de parâmetro precisos em toda a API |
| DNF types | Restrições de tipo complexas para validação interna |
#[\SensitiveParameter] | Senhas e chaves privadas nunca aparecem em stack traces (Aes256Encryptor, CertificateInfo, TsaClient) |
#[\NoDiscard] | Avisos do compilador se você ignorar valores de retorno de métodos críticos (FontManager::registerFont(), FormFlattener::flatten()) |
| Property hooks | Padrões de getter/setter limpos sem boilerplate |
| Pipe operator | Transformações de dados internas simplificadas |
| Fibers | Base para geração assíncrona de PDF em queue workers |
"Mas Meu Servidor Roda PHP 8.1..."
Use Docker como camada de isolamento. Sua aplicação pode rodar qualquer versão do PHP -- o TCPDF-Next roda dentro de um container.
Dockerfile Mínimo
dockerfile
FROM php:8.5-cli
# Install required extensions
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
# Install Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
COPY . /app
WORKDIR /app
RUN composer install --no-dev --optimize-autoloaderDocker Compose para Equipes
yaml
services:
pdf-generator:
build: .
volumes:
- ./output:/app/output
command: php generate-pdf.phpLaravel com Docker
Se sua aplicação Laravel roda PHP 8.2 mas você precisa do TCPDF-Next, execute a geração de PDF como um microserviço:
yaml
services:
app:
image: php:8.2-fpm
# Your Laravel app
pdf-service:
build:
context: ./pdf-service
dockerfile: Dockerfile
image: php:8.5-cli
volumes:
- shared-output:/output
volumes:
shared-output:Ou use o sistema de queue do Laravel para despachar geração de PDF para um worker PHP 8.5.
🐳 Docker for Legacy PHP Environments
Docker é a abordagem recomendada para equipes que não podem fazer upgrade da versão PHP em produção. O processo de geração de PDF é isolado -- ele lê a entrada, grava um arquivo PDF e encerra. Sem estado compartilhado, sem preocupações de compatibilidade.
O Trade-off
Ao exigir PHP 8.5+, o TCPDF-Next ganha:
- Codebase menor -- Recursos modernos substituem centenas de linhas de workarounds
- Segurança de tipos mais forte -- PHPStan Level 10 com zero erros
- Melhor segurança --
#[\SensitiveParameter]previne vazamento de credenciais em logs - Objetos imutáveis -- Readonly classes eliminam uma categoria inteira de bugs
- Código auto-documentável -- Enums substituem strings mágicas, named arguments substituem arrays posicionais
A biblioteca que vai te servir pela próxima década deve ser construída sobre os recursos de linguagem da próxima década.