Skip to content

왜 PHP 8.5+인가?

TCPDF-Next는 설계상 PHP 8.5+를 요구합니다. 이는 임의적인 제약이 아닙니다 — 라이브러리에서 사용하는 모든 모던 PHP 기능이 코드 품질, 보안, 개발자 경험에 직접적인 이점을 제공합니다.

사용하는 PHP 8.5 기능

기능TCPDF-Next에서의 이점
읽기 전용 클래스불변 값 객체 (PageSize, Margin, Color, FontInfo) — 변형 버그 없음
Backed 열거형타입 안전 설정 (Orientation::Portrait, BarcodeType::QRCode, SignatureLevel::PAdES_B_LTA)
명명된 인수자체 문서화 API 호출 — setSignature(certInfo: $cert, level: SignatureLevel::PAdES_B_B)
Union/intersection 타입API 전반에 걸친 정밀한 매개변수 타입
DNF 타입내부 유효성 검사를 위한 복합 타입 제약
#[\SensitiveParameter]비밀번호와 개인 키가 스택 트레이스에 절대 노출되지 않음 (Aes256Encryptor, CertificateInfo, TsaClient)
#[\NoDiscard]중요한 메서드의 반환 값을 무시하면 컴파일러 경고 발생 (FontManager::registerFont(), FormFlattener::flatten())
프로퍼티 훅보일러플레이트 없는 깔끔한 getter/setter 패턴
파이프 연산자간소화된 내부 데이터 변환
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

Docker를 사용한 Laravel

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의 큐 시스템을 사용하여 PHP 8.5 워커에 PDF 생성을 디스패치하세요.

🐳 Docker for Legacy PHP Environments
Docker는 프로덕션 PHP 버전을 업그레이드할 수 없는 팀에게 권장되는 접근 방식입니다. PDF 생성 프로세스는 격리되어 있습니다 — 입력을 읽고, PDF 파일을 작성하고, 종료합니다. 공유 상태도, 호환성 문제도 없습니다.

트레이드오프

PHP 8.5+를 요구함으로써 TCPDF-Next는 다음을 얻습니다:

  • 더 작은 코드베이스 — 모던 기능이 수백 줄의 우회 코드를 대체합니다
  • 더 강력한 타입 안전성 — PHPStan 레벨 8에서 오류 제로
  • 더 나은 보안#[\SensitiveParameter]가 로그에서 자격 증명 유출을 방지합니다
  • 불변 객체 — 읽기 전용 클래스가 버그의 한 범주를 완전히 제거합니다
  • 자체 문서화 코드 — 열거형이 매직 스트링을 대체하고, 명명된 인수가 위치 배열을 대체합니다

앞으로 10년간 여러분에게 봉사할 라이브러리는 앞으로 10년의 언어 기능 위에 구축되어야 합니다.

LGPL-3.0-or-later 라이선스로 배포됩니다.