Przejdź do głównej zawartości

Przewodnik programisty po zgodności z TCPDF

Adapter zgodności jest warstwą migracyjną. Uwidacznia zachowanie starszego kodu, zamiast je ukrywać. Korzystaj z niego, aby utrzymać działanie aplikacji podczas przenoszenia kluczowych ścieżek do natywnych interfejsów API NextPDF.

Korzystaj z tego przewodnika, gdy utrzymujesz starszy kod o interfejsie TCPDF, rozszerzasz pokrycie adaptera albo planujesz etapową migrację do natywnych interfejsów API NextPDF.

WarstwaNależy doOdpowiedzialnośćNie umieszczaj tutaj
Starsza aplikacjaAplikacjaUtrzymanie działania istniejących wywołań o interfejsie TCPDF podczas migracji.Nowe funkcje PDF, które powinny korzystać z natywnych interfejsów API NextPDF.
Powłoka adapteranextpdf/compat-legacyUdostępnianie klasy o kształcie TCPDF i współdzielonego stanu zgodności.Duże rodziny metod lub logika konwersji.
Cechy obszarów odpowiedzialnościnextpdf/compat-legacyGrupowanie rodzin starszych metod: tekst, czcionki, obrazy, zabezpieczenia, formularze, strony.Międzyrodzinna polityka wyjścia.
Klasy pomostowenextpdf/compat-legacyKonwersja starszych argumentów, miejsc docelowych, kolorów, jednostek i formatów.Zachowanie specyficzne dla domeny biznesowej.
Silnik podstawowynextpdf/nextpdfTworzenie natywnego dokumentu.Gwarancje zgodności ze starszym kodem.
EtapZachowanieDziałanie programisty
InicjalizacjaOpcjonalna inicjalizacja dla starszego kodu udostępnia nazwy zgodności.Używaj jej tylko tam, gdzie starszy kod oczekuje symboli TCPDF.
KonstruowanieAdapter mapuje starsze argumenty konstruktora na konfigurację dokumentu podstawowego.Utrzymuj stabilne dane wejściowe konstruktora podczas migracji.
Wywołanie metodyObsługiwane metody są mapowane na zachowanie NextPDF za pośrednictwem obszarów odpowiedzialności i pomostów.Sprawdź pokrycie metod, zanim założysz równoważność.
Nieobsługiwana funkcjaAdapter zgłasza jawne wyjątki zgodności dla nieobsługiwanego zachowania.Zastąp wywołanie lub odizoluj je w kodzie aplikacji.
WyjściePomost wyjścia mapuje zachowanie starszego miejsca docelowego na mechanizm wyjścia NextPDF.Zweryfikuj nazwy plików i katalogi główne magazynu.

Zacznij od zebrania wszystkich wywołań metod TCPDF w aplikacji. Sklasyfikuj każde wywołanie, zanim zmienisz jego zachowanie.

KlasyfikacjaZnaczenieDziałanie
Obsługiwana metoda adapteraMetoda jest udokumentowana jako obsługiwana i ma testy.Pozostaw ją tymczasowo, a następnie zmigruj, gdy będziesz pracować w tym obszarze.
Częściowo obsługiwana metoda adapteraMetoda istnieje, ale jej zachowanie nie odpowiada w pełni starszemu TCPDF.Dodaj testy oparte na danych testowych i ręcznie sprawdź poprawność wyniku.
Jawnie nieobsługiwana metodaAdapter zgłasza wyjątek zgodności.Zastąp ją natywnym interfejsem API NextPDF lub usuń tę funkcję.
Otoka specyficzna dla domeny biznesowejAplikacja już opakowuje wywołania TCPDF.Najpierw zmigruj implementację otoki.
Wywołanie wrażliwe z punktu widzenia zgodnościPrzepływ podpisu, szyfrowania, tagowania, PDF/A, dostępności lub faktury.Zmigruj do natywnych interfejsów API NextPDF z dedykowaną weryfikacją.

Dodaj obsługę zgodności w najmniejszej rodzinie metod odpowiedzialnej za dane zachowanie.

Typ zmianyGdzie zaimplementowaćWymagany test
Metoda wyjścia tekstuConcerns\AdaptsTextOutput lub obszar odpowiedzialności czcionek.Starsze dane testowe i asercja natywnego wyniku.
Metoda strony lub marginesuObszar odpowiedzialności strony, pozycjonowania lub marginesów.Test konwersji współrzędnych i stanu strony.
Metoda obrazu lub rysunkuObszar odpowiedzialności obrazów, rysowania, kolorów lub gradientów.Test walidacji danych wejściowych oraz wyniku visual/structural.
Miejsce docelowe wyjściaOutputBridge.Test mapowania miejsca docelowego i niebezpiecznej ścieżki.
Nieobsługiwana funkcjaFabryka wyjątków lub tabela pokrycia metod.Test typu wyjątku oraz komunikatu.

Nie umieszczaj dużej metody bezpośrednio w powłoce adaptera, jeśli rodziną zarządza cecha obszaru odpowiedzialności.

Użyj adaptera, aby ustabilizować starszy kod, a następnie przenieś stabilne przepływy pracy do natywnych interfejsów 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');

Traktuj migrację jako sekwencję niewielkich zmian zachowania. Strona może nadal korzystać z adaptera, podczas gdy jedna sekcja wysokiego ryzyka przechodzi na natywne interfejsy API.

Punkt rozszerzeniaUżywaj doOgraniczenie
AdaptationConfigSterowanie zachowaniem adaptera podczas migracji.Utrzymuj wartości domyślne jako jawne i poddane przeglądowi.
Cechy obszarów odpowiedzialnościGrupowanie rodzin metod, takich jak tekst, formularze, obrazy lub zabezpieczenia.Dodawaj metody do odpowiedniego obszaru odpowiedzialności, a nie do powłoki adaptera.
Klasy pomostoweKonwersja starszych kształtów argumentów na wartości podstawowe.Obejmij zachowanie pomostu testami migracji.
CompatAdapterInterfaceAbstrakcja na poziomie adaptera dla narzędzi.Nie używaj jej jako zamiennika natywnych kontraktów podstawowych w nowym kodzie.
Tabela pokrycia metodRejestr obsługi dla programistów.Aktualizuj ją, gdy zmienia się status obsługi.
  1. Zainstaluj adapter i uruchom starszy pakiet testów bez zmian.
  2. Otwórz pokrycie metod i sklasyfikuj każdą wywoływaną metodę.
  3. Najpierw zastąp nieobsługiwane metody.
  4. Przenieś ścieżki o dużym natężeniu lub wrażliwe z punktu widzenia zgodności do natywnych podstawowych interfejsów API.
  5. Dodaj pokrycie oparte na danych testowych dla każdej zmigrowanej rodziny metod.
  6. Usuń aliasy inicjalizacji, gdy żaden punkt wejścia aplikacji od nich nie zależy.
AwariaGdzie obsłużyćZalecana reakcja
Nieobsługiwana metodaWyjątek adaptera.Zastąp wywołanie lub odizoluj je za adapterem aplikacji.
Częściowa zgodność układuTesty migracji i przegląd wizualny.Udokumentuj zaakceptowaną różnicę przed wdrożeniem.
Niebezpieczne miejsce docelowe wyjściaOutputBridge oraz polityka magazynu aplikacji.Odrzucaj niebezpieczne ścieżki i preferuj natywne interfejsy API wyjścia.
Niezgodność funkcji zabezpieczeńPlan natywnej migracji.Nie wdrażaj dla wyników podlegających regulacjom zachowania dostępnego wyłącznie w trybie zgodności.
Kolizja aliasu inicjalizacjiInicjalizacja aplikacji.Usuń globalne aliasy lub ogranicz je do starszych punktów wejścia.
Obszar odpowiedzialnościWartość domyślnaKiedy nadpisać
Nieobsługiwane metodyZgłoszenie jawnego wyjątku.Nie osłabiaj tego w produkcji.
Starsze wartości domyślneScentralizowane w LegacyDefaults.Nadpisuj tylko dla znanego zachowania migracyjnego.
Mapowanie wyjściaPrzechodzi przez OutputBridge.Po migracji korzystaj z natywnych interfejsów API wyjścia.
Źródło pokryciaStrona pokrycia metod i testy.Uruchamiaj kontrole pokrycia ponownie po każdej aktualizacji adaptera.
Tryb ścisłyPozostaw włączony podczas audytów migracji.Wyłączaj tylko na czas udokumentowanego okna zgodności ze starszym kodem.
  • Zachowaj starsze dane testowe dla każdej zmigrowanej rodziny metod.
  • Dodaj jeden natywny test NextPDF, zanim zastąpisz starszą metodę.
  • Asercją sprawdzaj, czy nieobsługiwane metody zgłaszają udokumentowany wyjątek.
  • Porównuj strukturę wyniku, gdy dokładna równość bajtów nie jest realistycznym celem migracji.
  • Uruchamiaj kontrole pokrycia metod po dodaniu lub zmianie metod adaptera.
  • Dodaj testy ścieżek magazynu dla każdego miejsca docelowego wyjścia używanego przez starszy kod.