Lewati ke konten

Panduan pengembang untuk kompatibilitas TCPDF

Adapter kompatibilitas merupakan lapisan migrasi. Adapter ini membuat perilaku lama tetap terlihat, bukan menyembunyikannya. Gunakan adapter ini untuk menjaga aplikasi Anda tetap berjalan saat memindahkan jalur bernilai tinggi ke API NextPDF native.

Gunakan panduan ini saat Anda memelihara kode lama bergaya TCPDF, menambahkan cakupan adapter, atau merencanakan migrasi bertahap ke API NextPDF native.

LapisanDimiliki olehTanggung jawabJangan letakkan di sini
Aplikasi lamaAplikasiMenjaga panggilan bergaya TCPDF yang ada tetap berjalan selama migrasi.Fitur PDF baru yang sebaiknya dibangun dengan API NextPDF native.
Cangkang adapternextpdf/compat-legacyMengekspos kelas bergaya TCPDF dan status kompatibilitas bersama.Famili metode besar atau logika konversi.
Trait concernnextpdf/compat-legacyMengelompokkan famili metode lama: teks, fon, gambar, keamanan, formulir, halaman.Kebijakan keluaran yang berlaku lintas famili.
Kelas jembatannextpdf/compat-legacyMengonversi argumen, tujuan, warna, satuan, dan format lama.Perilaku khusus bisnis.
Mesin intinextpdf/nextpdfMembuat dokumen native.Jaminan kompatibilitas lama.
TahapPerilakuTindakan pengembang
BootstrapBootstrap lama opsional mengekspos nama kompatibilitas.Gunakan hanya di bagian kode lama yang mengharapkan simbol TCPDF.
KonstruksiAdapter memetakan argumen konstruktor lama ke konfigurasi dokumen inti.Pertahankan masukan konstruktor tetap stabil selama migrasi.
Panggilan metodeMetode yang didukung dipetakan ke perilaku NextPDF melalui concern dan jembatan.Periksa cakupan metode sebelum berasumsi bahwa perilakunya setara.
Fitur yang tidak didukungAdapter melempar pengecualian kompatibilitas eksplisit untuk perilaku yang tidak didukung.Ganti panggilan tersebut atau isolasikan di balik kode aplikasi.
KeluaranJembatan keluaran memetakan perilaku tujuan lama ke keluaran NextPDF.Validasi nama berkas dan akar penyimpanan.

Mulailah dengan menginventarisasi setiap panggilan metode TCPDF di aplikasi Anda. Klasifikasikan setiap panggilan sebelum mengubah perilakunya.

KlasifikasiMaknaTindakan
Metode adapter yang didukungMetode tersebut didokumentasikan sebagai metode yang didukung dan memiliki pengujian.Pertahankan untuk sementara, lalu migrasikan saat Anda menyentuh area tersebut.
Metode adapter parsialMetode tersebut ada, tetapi perilakunya tidak sepenuhnya cocok dengan TCPDF lama.Tambahkan pengujian berbasis fixture dan validasi keluaran secara manual.
Metode tidak didukung secara eksplisitAdapter melempar pengecualian kompatibilitas.Ganti dengan NextPDF native atau hapus fitur tersebut.
Pembungkus khusus bisnisAplikasi sudah membungkus panggilan TCPDF tersebut.Migrasikan bagian internal pembungkus terlebih dahulu.
Panggilan yang sensitif terhadap kepatuhanTanda tangan, enkripsi, penandaan, PDF/A, aksesibilitas, atau alur kerja faktur.Migrasikan ke API NextPDF native dengan verifikasi khusus.

Tambahkan dukungan kompatibilitas pada famili metode terkecil yang memuat perilaku tersebut.

Jenis perubahanTempat mengimplementasikanPengujian yang diperlukan
Metode keluaran teksConcerns\AdaptsTextOutput atau concern fon.Fixture lama ditambah asersi keluaran native.
Metode halaman atau marginConcern halaman, pemosisian, atau margin.Pengujian konversi koordinat dan status halaman.
Metode gambar atau penggambaranConcern gambar, penggambaran, warna, atau gradien.Pengujian validasi masukan dan keluaran visual/structural.
Tujuan keluaranOutputBridge.Pengujian pemetaan tujuan dan jalur tidak aman.
Fitur yang tidak didukungPabrik pengecualian atau tabel cakupan metode.Pengujian jenis pengecualian serta pesannya.

Jangan letakkan metode besar langsung di cangkang adapter jika trait concern sudah memiliki famili tersebut.

Gunakan adapter untuk menstabilkan kode lama, lalu pindahkan alur kerja yang stabil ke API native.

<?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');

Perlakukan migrasi sebagai rangkaian perpindahan perilaku kecil. Satu halaman masih dapat menggunakan adapter, sementara satu bagian berisiko tinggi dipindahkan ke API native.

Titik ekstensiGunakan untukBatasan
AdaptationConfigMengontrol perilaku adapter selama migrasi.Pastikan nilai standar tetap eksplisit dan ditinjau.
Trait concernMengelompokkan famili metode seperti teks, formulir, gambar, atau keamanan.Tambahkan metode ke concern yang sesuai, bukan langsung ke cangkang adapter.
Kelas jembatanMengonversi bentuk argumen lama menjadi nilai inti.Lindungi perilaku jembatan dengan pengujian migrasi.
CompatAdapterInterfaceAbstraksi tingkat adapter untuk perkakas.Jangan gunakan sebagai pengganti kontrak inti native dalam kode baru.
Tabel cakupan metodeCatatan dukungan yang ditujukan untuk pengembang.Perbarui saat status dukungan berubah.
  1. Pasang adapter dan jalankan rangkaian pengujian lama tanpa perubahan.
  2. Buka cakupan metode dan klasifikasikan setiap metode yang dipanggil.
  3. Ganti metode yang tidak didukung terlebih dahulu.
  4. Pindahkan jalur bervolume tinggi atau sensitif terhadap kepatuhan ke API inti native.
  5. Tambahkan cakupan fixture untuk setiap famili metode yang dimigrasikan.
  6. Hapus alias bootstrap saat tidak ada titik masuk aplikasi yang bergantung padanya.
KegagalanTempat penanganan yang tepatRespons yang disarankan
Metode tidak didukungPengecualian adapter.Ganti panggilan tersebut atau isolasikan di balik adapter aplikasi.
Kesetaraan tata letak parsialPengujian migrasi dan tinjauan visual.Dokumentasikan perbedaan yang dapat diterima sebelum peluncuran.
Tujuan keluaran tidak amanOutputBridge dan kebijakan penyimpanan aplikasi.Tolak jalur yang tidak aman dan utamakan API keluaran native.
Ketidakcocokan fitur keamananRencana migrasi native.Jangan merilis perilaku khusus kompatibilitas untuk keluaran yang diatur regulasi.
Tabrakan alias bootstrapBootstrap aplikasi.Hapus alias global atau batasi cakupannya pada titik masuk lama.
ConcernStandarKapan perlu menimpa
Metode yang tidak didukungLemparkan pengecualian eksplisit.Jangan melemahkannya di lingkungan produksi.
Nilai standar lamaDipusatkan di LegacyDefaults.Timpa hanya untuk perilaku migrasi yang diketahui.
Pemetaan keluaranMelalui OutputBridge.Gunakan API keluaran native setelah migrasi.
Sumber cakupanHalaman cakupan metode dan pengujian.Jalankan kembali pemeriksaan cakupan setelah setiap peningkatan adapter.
Mode ketatTetap aktif selama audit migrasi.Nonaktifkan hanya untuk jendela kompatibilitas lama yang terdokumentasi.
  • Pertahankan fixture lama untuk setiap famili metode yang dimigrasikan.
  • Tambahkan satu pengujian NextPDF native sebelum Anda mengganti metode lama.
  • Pastikan metode yang tidak didukung melemparkan pengecualian yang terdokumentasi.
  • Bandingkan struktur keluaran ketika kesetaraan byte persis bukan target migrasi yang realistis.
  • Jalankan pemeriksaan cakupan metode setelah Anda menambahkan atau mengubah metode adapter.
  • Tambahkan pengujian jalur penyimpanan untuk setiap tujuan keluaran yang digunakan kode lama.