跳到內容

TCPDF 相容性開發者指南

相容性配接器是一個移轉層。它應該讓舊版行為保持可見,而不是把它藏起來。用它讓應用程式持續運作,同時把高價值路徑移轉到原生 NextPDF API。

當你在維護 TCPDF 形式的舊版程式碼、擴充配接器覆蓋範圍,或規劃分階段移轉到原生 NextPDF API 時,請使用本指南。

分層擁有者職責不要放在這裡
舊版應用程式應用程式在移轉期間維持現有 TCPDF 形式的呼叫運作。應改用原生 NextPDF API 的新 PDF 功能。
配接器外殼nextpdf/compat-legacy公開 TCPDF 形式的類別與共用相容性狀態。大型方法群組或轉換邏輯。
關注點 traitnextpdf/compat-legacy依舊版方法群組分類:文字、字型、影像、安全性、表單、頁面。跨群組的輸出政策。
橋接類別nextpdf/compat-legacy轉換舊版引數、目的地、色彩、單位與格式。業務專屬的行為。
核心引擎nextpdf/nextpdf產生原生文件。舊版相容性承諾。
階段行為開發者動作
啟動選用的舊版啟動程序會公開相容性名稱。僅在舊版程式碼預期有 TCPDF 符號的地方使用。
建構舊版建構式引數會被調整為核心文件組態。在移轉期間保持建構式輸入穩定。
方法呼叫支援的方法會透過關注點與橋接,對映到 NextPDF 行為。先檢查方法覆蓋範圍,再假設行為對等。
不支援的功能不支援的行為會擲出明確的相容性例外。替換該呼叫,或將它隔離在應用程式程式碼後方。
輸出輸出橋接會把舊版目的地行為對映到 NextPDF 輸出。驗證檔名與儲存根目錄。

先蒐集應用程式中的每一個 TCPDF 方法呼叫。變更行為前,先把每個呼叫分類。

分類意義動作
支援的配接器方法方法已列為支援,並有測試。暫時保留,之後觸及該區域時再移轉。
部分支援的配接器方法方法存在,但行為尚未完全對齊舊版 TCPDF。加上 fixture 測試,並手動驗證輸出。
明確不支援的方法配接器會擲出相容性例外。改用原生 NextPDF,或移除該功能。
業務專屬包裝應用程式已經把 TCPDF 呼叫包裝起來。先移轉包裝內部。
合規敏感的呼叫簽章、加密、標記、PDF/A、無障礙或發票流程。移轉到原生 NextPDF API,並進行專屬驗證。

把相容性支援加在實際擁有該行為的最小方法群組中。

變更類型在何處實作必要測試
文字輸出方法Concerns\AdaptsTextOutput 或字型關注點。舊版 fixture,以及原生輸出斷言。
頁面或邊界方法頁面、定位或邊界關注點。座標轉換與頁面狀態測試。
影像或繪圖方法影像、繪圖、色彩或漸層關注點。輸入驗證與 visual/structural 輸出測試。
輸出目的地OutputBridge目的地對映與不安全路徑測試。
不支援的功能例外工廠或方法覆蓋表。例外類型與訊息測試。

若某個關注點 trait 已擁有該群組,不要把大型方法直接加進配接器外殼。

先用配接器穩定現況,再把穩定的工作流程移到原生 API。

<?php
// Temporary compatibility code.
$pdf = new \NextPDF\Compat\Tcpdf\TCPDF();
$pdf->AddPage();
$pdf->SetFont('dejavusans', '', 12);
$pdf->Cell(0, 10, 'Invoice 1234');
// Target native shape.
$document = \NextPDF\Core\Document::createStandalone();
$document->addPage()
->setFont('dejavusans', '', 12)
->cell(0, 10, 'Invoice 1234');

把移轉視為一連串小型的行為變更。即使某個高風險區段移到原生 API,頁面仍然可以使用配接器。

擴充點用途限制
AdaptationConfig在移轉期間控制配接器行為。讓預設值保持經過檢視且明確。
關注點 trait組織方法群組,例如文字、表單、影像或安全性。把方法加到適當的關注點,而不是配接器外殼。
橋接類別把舊版引數形式轉換為核心值。讓橋接行為持續受到移轉測試覆蓋。
CompatAdapterInterface供工具使用的配接器層級抽象。在新程式碼中,不要用它來取代原生核心契約。
方法覆蓋表供開發者查閱的支援帳本。在支援狀態變更時更新。
  1. 安裝配接器,並原封不動執行舊版測試套件。
  2. 開啟方法覆蓋,並把每個被呼叫的方法分類。
  3. 先替換不支援的方法。
  4. 把高流量或合規敏感路徑移到原生核心 API。
  5. 為每個已移轉的方法群組加上 fixture 覆蓋範圍。
  6. 當沒有應用程式進入點依賴啟動別名時,移除這些別名。
失敗應在何處處理建議的回應
不支援的方法配接器例外。替換該呼叫,或將它隔離在應用程式配接器後方。
版面部分對等移轉測試與視覺檢視。在推出前,先記錄可接受的差異。
不安全的輸出目的地OutputBridge 與應用程式儲存政策。拒絕不安全的路徑,並優先使用原生輸出 API。
安全性功能不一致原生移轉計畫。不要為受規範的輸出推出僅相容性的行為。
啟動別名衝突應用程式啟動程序。移除全域別名,或把它們限定在舊版進入點的範圍內。
關注點預設值何時覆寫
不支援的方法擲出明確的例外。在生產環境中不要放寬此行為。
舊版預設值集中於 LegacyDefaults只有在已知的移轉行為需要時才覆寫。
輸出對映會經過 OutputBridge移轉後改用原生輸出 API。
覆蓋範圍來源方法覆蓋頁面與測試。在每次配接器升級後,重新執行覆蓋範圍檢查。
嚴格模式在移轉稽核期間維持啟用。只在有記錄的舊版相容性期間內才停用。
  • 為每個已移轉的方法群組保留一份舊版 fixture。
  • 在替換舊版方法之前,先新增一個原生 NextPDF 測試。
  • 斷言不支援的方法會擲出有記錄的例外。
  • 當逐位元組相等並非務實的移轉目標時,改為比較輸出結構。
  • 在新增或變更配接器方法後,執行方法覆蓋範圍檢查。
  • 為舊版程式碼使用的每個輸出目的地加上儲存路徑測試。