Skip to content

なぜ PHP 8.5+ なのか?

TCPDF-Next は設計上 PHP 8.5+ を必要とします。これは任意の制約ではありません。ライブラリで使用されるすべてのモダンな PHP 機能が、コード品質、セキュリティ、および開発者体験に直接的な恩恵をもたらしています。

使用している PHP 8.5 の機能

機能TCPDF-Next へのメリット
Readonly クラスイミュータブルな値オブジェクト(PageSizeMarginColorFontInfo) — ミューテーションバグなし
Backed Enum型安全な設定(Orientation::PortraitBarcodeType::QRCodeSignatureLevel::PAdES_B_LTA
名前付き引数自己文書化された API 呼び出し — setSignature(certInfo: $cert, level: SignatureLevel::PAdES_B_B)
Union/Intersection 型API 全体にわたる正確なパラメータ型
DNF 型内部バリデーション用の複雑な型制約
#[\SensitiveParameter]パスワードと秘密鍵がスタックトレースに表示されない(Aes256EncryptorCertificateInfoTsaClient
#[\NoDiscard]重要なメソッドの戻り値を無視するとコンパイラ警告が発生(FontManager::registerFont()FormFlattener::flatten()
プロパティフックボイラープレートなしのクリーンなゲッター/セッターパターン
パイプ演算子内部データ変換の効率化
Fiberキューワーカーでの非同期 PDF 生成の基盤

「でも、うちのサーバーは PHP 8.1 なんだけど...」

Docker をアイソレーションレイヤーとして使用してください。あなたのアプリケーションは任意の PHP バージョンで動作できます。TCPDF-Next はコンテナ内で実行されます。

最小限の Dockerfile

dockerfile
FROM php:8.5-cli

# 必要な拡張機能をインストール
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

# Composer をインストール
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

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

チーム向け Docker Compose

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

Laravel と Docker

Laravel アプリが PHP 8.2 で動作しているが TCPDF-Next が必要な場合は、PDF 生成をマイクロサービスとして実行します:

yaml
services:
  app:
    image: php:8.2-fpm
    # あなたの Laravel アプリ

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

volumes:
  shared-output:

あるいは、Laravel のキューシステムを使用して PDF 生成を PHP 8.5 ワーカーにディスパッチすることもできます。

🐳 Docker for Legacy PHP Environments
Docker は、本番 PHP バージョンをアップグレードできないチームにとって推奨されるアプローチです。PDF 生成プロセスは分離されています — 入力を読み取り、PDF ファイルを書き出し、終了します。共有状態も互換性の懸念もありません。

トレードオフ

PHP 8.5+ を要求することで、TCPDF-Next は以下を獲得しています:

  • よりコンパクトなコードベース — モダンな機能が数百行のワークアラウンドを置き換えます
  • より強力な型安全性 — PHPStan レベル 8 でエラーゼロ
  • より優れたセキュリティ#[\SensitiveParameter] がログでの認証情報漏洩を防止します
  • イミュータブルオブジェクト — Readonly クラスがバグのカテゴリ全体を排除します
  • 自己文書化コード — Enum がマジック文字列を置き換え、名前付き引数が位置引数配列を置き換えます

次の 10 年間あなたに役立つライブラリは、次の 10 年間の言語機能に基づいて構築されるべきです。

LGPL-3.0-or-later ライセンスの下で公開されています。