Skip to content

Tại sao PHP 8.5+?

TCPDF-Next yêu cầu PHP 8.5+ theo thiết kế. Đây không phải ràng buộc tùy ý — mọi tính năng PHP hiện đại được dùng trong thư viện trực tiếp mang lại lợi ích cho chất lượng code, bảo mật và trải nghiệm developer.

Tính năng PHP 8.5 chúng tôi dùng

Tính năngLợi ích cho TCPDF-Next
Readonly classValue object bất biến (PageSize, Margin, Color, FontInfo) — không lỗi mutation
Backed enumCấu hình type-safe (Orientation::Portrait, BarcodeType::QRCode, SignatureLevel::PAdES_B_LTA)
Named argumentLời gọi API tự ghi chú — setSignature(certInfo: $cert, level: SignatureLevel::PAdES_B_B)
Union/intersection typeKiểu tham số chính xác trong API
DNF typeRàng buộc kiểu phức tạp cho validation nội bộ
#[\SensitiveParameter]Mật khẩu và private key không bao giờ xuất hiện trong stack trace (Aes256Encryptor, CertificateInfo, TsaClient)
#[\NoDiscard]Cảnh báo compiler nếu bỏ qua giá trị trả về từ method quan trọng (FontManager::registerFont(), FormFlattener::flatten())
Property hookPattern getter/setter sạch không boilerplate
Pipe operatorBiến đổi dữ liệu nội bộ gọn gàng
FiberNền tảng cho tạo PDF bất đồng bộ trong queue worker

"Nhưng server tôi chạy PHP 8.1..."

Dùng Docker làm lớp cách ly. Ứng dụng của bạn có thể chạy bất kỳ phiên bản PHP nào — TCPDF-Next chạy bên trong container.

Dockerfile tối thiểu

dockerfile
FROM php:8.5-cli

# Cài extension cần thiết
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

# Cài Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

COPY . /app
WORKDIR /app
RUN composer install --no-dev --optimize-autoloader

Docker Compose cho team

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

Laravel với Docker

Nếu ứng dụng Laravel chạy PHP 8.2 nhưng cần TCPDF-Next, chạy tạo PDF dạng microservice:

yaml
services:
  app:
    image: php:8.2-fpm
    # Ứng dụng Laravel

  pdf-service:
    build:
      context: ./pdf-service
      dockerfile: Dockerfile
    image: php:8.5-cli
    volumes:
      - shared-output:/output

volumes:
  shared-output:

Hoặc dùng hệ thống queue của Laravel để dispatch tạo PDF tới worker PHP 8.5.

🐳 Docker for Legacy PHP Environments
Docker là cách tiếp cận khuyến nghị cho team không thể nâng cấp phiên bản PHP production. Quy trình tạo PDF được cách ly — đọc input, ghi file PDF và thoát. Không chia sẻ state, không lo tương thích.

Đánh đổi

Bằng cách yêu cầu PHP 8.5+, TCPDF-Next được:

  • Codebase nhỏ hơn — Tính năng hiện đại thay thế hàng trăm dòng workaround
  • Type safety mạnh hơn — PHPStan Level 10 không lỗi
  • Bảo mật tốt hơn#[\SensitiveParameter] ngăn rò rỉ credential trong log
  • Object bất biến — Readonly class loại bỏ cả một loại bug
  • Code tự ghi chú — Enum thay magic string, named argument thay positional array

Thư viện phục vụ bạn thập kỷ tới nên được xây trên tính năng ngôn ngữ của thập kỷ tới.

Phân phối theo giấy phép LGPL-3.0-or-later.