Skip to content

Mengapa PHP 8.5+?

TCPDF-Next memerlukan PHP 8.5+ secara desain. Ini bukan batasan sewenang-wenang — setiap fitur PHP modern yang digunakan di library secara langsung menguntungkan kualitas kode, keamanan, dan pengalaman developer.

Fitur PHP 8.5 yang Kami Gunakan

FiturBagaimana Menguntungkan TCPDF-Next
Class readonlyValue object immutable (PageSize, Margin, Color, FontInfo) — tanpa bug mutasi
Backed enumKonfigurasi type-safe (Orientation::Portrait, BarcodeType::QRCode, SignatureLevel::PAdES_B_LTA)
Named argumentPanggilan API yang self-documenting — setSignature(certInfo: $cert, level: SignatureLevel::PAdES_B_B)
Union/intersection typeTipe parameter yang presisi di seluruh API
DNF typeBatasan tipe kompleks untuk validasi internal
#[\SensitiveParameter]Password dan private key tidak pernah muncul di stack trace (Aes256Encryptor, CertificateInfo, TsaClient)
#[\NoDiscard]Warning compiler jika Anda mengabaikan return value dari method kritis (FontManager::registerFont(), FormFlattener::flatten())
Property hookPola getter/setter yang bersih tanpa boilerplate
Pipe operatorTransformasi data internal yang streamlined
FiberFondasi untuk pembuatan PDF async di queue worker

"Tapi Server Saya Menjalankan PHP 8.1..."

Gunakan Docker sebagai lapisan isolasi. Aplikasi Anda bisa menjalankan versi PHP apa pun — TCPDF-Next berjalan di dalam container.

Dockerfile Minimal

dockerfile
FROM php:8.5-cli

# Instal ekstensi yang diperlukan
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

# Instal Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

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

Docker Compose untuk Tim

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

Laravel dengan Docker

Jika aplikasi Laravel Anda menjalankan PHP 8.2 tetapi Anda membutuhkan TCPDF-Next, jalankan pembuatan PDF sebagai microservice:

yaml
services:
  app:
    image: php:8.2-fpm
    # Aplikasi Laravel Anda

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

volumes:
  shared-output:

Atau gunakan sistem queue Laravel untuk mendispatch pembuatan PDF ke worker PHP 8.5.

🐳 Docker for Legacy PHP Environments
Docker adalah pendekatan yang direkomendasikan untuk tim yang tidak bisa meng-upgrade versi PHP produksi mereka. Proses pembuatan PDF terisolasi — membaca input, menulis file PDF, dan keluar. Tanpa shared state, tanpa masalah kompatibilitas.

Trade-off

Dengan memerlukan PHP 8.5+, TCPDF-Next mendapatkan:

  • Codebase lebih kecil -- Fitur modern menggantikan ratusan baris workaround
  • Type safety lebih kuat -- PHPStan Level 10 dengan zero error
  • Keamanan lebih baik -- #[\SensitiveParameter] mencegah kebocoran kredensial di log
  • Objek immutable -- Class readonly menghilangkan seluruh kategori bug
  • Kode self-documenting -- Enum menggantikan magic string, named argument menggantikan array posisional

Library yang melayani Anda untuk dekade berikutnya harus dibangun di atas fitur bahasa dekade berikutnya.

Didistribusikan di bawah lisensi LGPL-3.0-or-later.