Skip to content

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 readonlyObjets de valeur immuables (PageSize, Margin, Color, FontInfo) — pas de bugs de mutation
Enums backedConfiguration type-safe (Orientation::Portrait, BarcodeType::QRCode, SignatureLevel::PAdES_B_LTA)
Arguments nommésAppels API auto-documentés — setSignature(certInfo: $cert, level: SignatureLevel::PAdES_B_B)
Types union/intersectionTypes de paramètres précis à travers l'API
Types DNFContraintes 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 hooksPatterns getter/setter propres sans code boilerplate
Opérateur pipeTransformations de données internes rationalisées
FibersFondation 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

dockerfile
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-autoloader

Docker Compose pour équipes

yaml
services:
  pdf-generator:
    build: .
    volumes:
      - ./output:/app/output
    command: php generate-pdf.php

Laravel 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 :

yaml
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.

🐳 Docker for Legacy PHP Environments
Docker est l'approche recommandée pour équipes ne pouvant pas mettre à niveau leur version PHP de production. Le processus de génération PDF est isolé — il lit une entrée, écrit un fichier PDF et se termine. Pas d'état partagé, pas de préoccupations de compatibilité.

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.

Distribué sous licence LGPL-3.0-or-later.