Pourquoi PHP 8.5+ ?
TCPDF-Next nécessite PHP 8.5+ par conception. Ce n'est pas une contrainte arbitraire — chaque fonctionnalité PHP moderne utilisée dans la bibliothèque bénéficie directement à la qualité du code, la sécurité et l'expérience développeur.
Fonctionnalités PHP 8.5 que nous utilisons
| Fonctionnalité | Comment elle bénéficie à TCPDF-Next |
|---|---|
| Classes readonly | Objets de valeur immuables (PageSize, Margin, Color, FontInfo) — pas de bugs de mutation |
| Enums backed | Configuration type-safe (Orientation::Portrait, BarcodeType::QRCode, SignatureLevel::PAdES_B_LTA) |
| Arguments nommés | Appels API auto-documentés — setSignature(certInfo: $cert, level: SignatureLevel::PAdES_B_B) |
| Types union/intersection | Types de paramètres précis à travers l'API |
| Types DNF | Contraintes de type complexes pour validation interne |
#[\SensitiveParameter] | Mots de passe et clés privées n'apparaissent jamais dans traces de pile (Aes256Encryptor, CertificateInfo, TsaClient) |
#[\NoDiscard] | Avertissements compilateur si vous ignorez valeurs de retour de méthodes critiques (FontManager::registerFont(), FormFlattener::flatten()) |
| Property hooks | Patterns getter/setter propres sans code boilerplate |
| Opérateur pipe | Transformations de données internes rationalisées |
| Fibers | Fondation pour génération PDF asynchrone dans workers de file |
"Mais mon serveur tourne PHP 8.1..."
Utilisez Docker comme couche d'isolation. Votre application peut tourner sur n'importe quelle version PHP — TCPDF-Next tourne dans un conteneur.
Dockerfile minimal
FROM php:8.5-cli
# Installer extensions requises
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
# Installer Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
COPY . /app
WORKDIR /app
RUN composer install --no-dev --optimize-autoloaderDocker Compose pour équipes
services:
pdf-generator:
build: .
volumes:
- ./output:/app/output
command: php generate-pdf.phpLaravel avec Docker
Si votre app Laravel tourne PHP 8.2 mais vous avez besoin de TCPDF-Next, exécutez la génération PDF comme microservice :
services:
app:
image: php:8.2-fpm
# Votre app Laravel
pdf-service:
build:
context: ./pdf-service
dockerfile: Dockerfile
image: php:8.5-cli
volumes:
- shared-output:/output
volumes:
shared-output:Ou utilisez le système de file de Laravel pour dispatcher la génération PDF vers un worker PHP 8.5.
Le compromis
En exigeant PHP 8.5+, TCPDF-Next gagne :
- Base de code plus petite — Les fonctionnalités modernes remplacent des centaines de lignes de contournements
- Sécurité de type plus forte — PHPStan Level 10 avec zéro erreurs
- Meilleure sécurité —
#[\SensitiveParameter]empêche les fuites d'identifiants dans les journaux - Objets immuables — Les classes readonly éliminent une catégorie entière de bugs
- Code auto-documenté — Les enums remplacent les chaînes magiques, les arguments nommés remplacent les tableaux positionnels
La bibliothèque qui vous servira pendant la prochaine décennie devrait être construite sur les fonctionnalités du langage de la prochaine décennie.