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
| Fitur | Bagaimana Menguntungkan TCPDF-Next |
|---|---|
| Class readonly | Value object immutable (PageSize, Margin, Color, FontInfo) — tanpa bug mutasi |
| Backed enum | Konfigurasi type-safe (Orientation::Portrait, BarcodeType::QRCode, SignatureLevel::PAdES_B_LTA) |
| Named argument | Panggilan API yang self-documenting — setSignature(certInfo: $cert, level: SignatureLevel::PAdES_B_B) |
| Union/intersection type | Tipe parameter yang presisi di seluruh API |
| DNF type | Batasan 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 hook | Pola getter/setter yang bersih tanpa boilerplate |
| Pipe operator | Transformasi data internal yang streamlined |
| Fiber | Fondasi 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-autoloaderDocker Compose untuk Tim
yaml
services:
pdf-generator:
build: .
volumes:
- ./output:/app/output
command: php generate-pdf.phpLaravel 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.