İçeriğe geç

TCPDF uyumluluğu için geliştirici kılavuzu

Uyumluluk bağdaştırıcısı bir geçiş katmanıdır. Eski davranışı gizlemek yerine görünür kılar. Yüksek değerli yolları yerel NextPDF API’lerine taşırken uygulamanızı çalışır durumda tutmak için bu katmanı kullanın.

TCPDF biçimli eski kodun bakımını yaptığınızda, bağdaştırıcı kapsamını genişlettiğinizde veya yerel NextPDF API’lerine aşamalı bir geçiş planladığınızda bu kılavuzu kullanın.

KatmanSahibiSorumlulukBuraya koymayın
Eski uygulamaUygulamaMevcut TCPDF biçimli çağrıları geçiş sırasında çalışır durumda tutar.Yerel NextPDF API’lerini kullanması gereken yeni PDF özellikleri.
Bağdaştırıcı kabuğunextpdf/compat-legacyBu katman, TCPDF biçimli sınıfı ve paylaşılan uyumluluk durumunu dışa açar.Büyük yöntem aileleri veya dönüştürme mantığı.
Concern trait’lerinextpdf/compat-legacyEski yöntem ailelerini gruplar: metin, yazı tipleri, görseller, güvenlik, formlar, sayfalar.Aileler arası çıktı ilkesi.
Köprü (bridge) sınıflarınextpdf/compat-legacyEski bağımsız değişkenleri, hedefleri, renkleri, birimleri ve biçimleri dönüştürür.İşletmeye özgü davranış.
Çekirdek motornextpdf/nextpdfYerel belgeyi oluşturur.Eski uyumluluk vaatleri.
AşamaDavranışGeliştirici eylemi
Önyüklemeİsteğe bağlı eski önyükleme, uyumluluk adlarını dışa açar.Bunu yalnızca eski kodun TCPDF sembollerini beklediği yerlerde kullanın.
Kurulum (yapılandırıcı)Bağdaştırıcı, eski yapılandırıcı bağımsız değişkenlerini çekirdek belge yapılandırmasına eşler.Geçiş sırasında yapılandırıcı girdilerini kararlı tutun.
Yöntem çağrısıDesteklenen yöntemler, concern’ler ve köprüler aracılığıyla NextPDF davranışına eşlenir.Eşitlik (parity) varsaymadan önce yöntem kapsamını denetleyin.
Desteklenmeyen özellikBağdaştırıcı, desteklenmeyen davranış için açık uyumluluk istisnaları fırlatır.Çağrıyı değiştirin veya uygulama kodunun arkasında yalıtın.
ÇıktıÇıktı köprüsü, eski hedef davranışını NextPDF çıktısına eşler.Dosya adlarını ve depolama köklerini doğrulayın.

Uygulamanızdaki her TCPDF yöntem çağrısını toplayarak başlayın. Davranışı değiştirmeden önce her çağrıyı sınıflandırın.

SınıflandırmaAnlamıEylem
Desteklenen bağdaştırıcı yöntemiYöntem destekleniyor olarak belgelenmiştir ve testleri vardır.Geçici olarak koruyun; bu alana dokunduğunuzda geçiş yapın.
Kısmi bağdaştırıcı yöntemiYöntem mevcuttur, ancak davranışı eski TCPDF ile tam olarak eşleşmez.Fixture testleri ekleyin ve çıktıyı el ile doğrulayın.
Açıkça desteklenmeyen yöntemBağdaştırıcı bir uyumluluk istisnası fırlatır.Bunu yerel NextPDF ile değiştirin veya özelliği kaldırın.
İşletmeye özgü sarmalayıcıUygulama, TCPDF çağrılarını zaten sarmalar.Önce sarmalayıcının iç bölümlerine geçiş yapın.
Uyumluluğa duyarlı çağrıİmza, şifreleme, etiketleme, PDF/A, erişilebilirlik veya fatura akışı.Özel doğrulamayla yerel NextPDF API’lerine geçiş yapın.

Uyumluluk desteğini, ilgili davranışı sahiplenen en küçük yöntem ailesine ekleyin.

Değişiklik türüNerede uygulanacağıGerekli test
Metin çıktısı yöntemiConcerns\AdaptsTextOutput ya da yazı tipi concern’i.Eski fixture ile birlikte yerel çıktı doğrulaması.
Sayfa veya kenar boşluğu yöntemiSayfa, konumlandırma veya kenar boşluğu concern’i.Koordinat dönüşümü ve sayfa durumu testi.
Görsel veya çizim yöntemiGörsel, çizim, renk veya gradyan concern’i.Girdi doğrulaması ve visual/structural çıktı testi.
Çıktı hedefiOutputBridge.Hedef eşlemesi ve güvensiz yol testi.
Desteklenmeyen özellikİstisna fabrikası ya da yöntem kapsamı tablosu.İstisna türü ve ileti testi.

Bir concern trait’i bir yöntem ailesini sahiplendiğinde, büyük bir yöntemi doğrudan bağdaştırıcı kabuğuna koymayın.

Eski kodu kararlı hale getirmek için bağdaştırıcıyı kullanın, ardından kararlı iş akışlarını yerel API’lere taşıyın.

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

Geçişi, küçük davranışsal adımlardan oluşan bir dizi olarak ele alın. Yüksek riskli bir bölüm yerel API’lere taşınırken bir sayfa hâlâ bağdaştırıcıyı kullanabilir.

Genişletme noktasıŞunun için kullanınKısıt
AdaptationConfigGeçiş sırasında bağdaştırıcı davranışını denetler.Varsayılanları açık ve gözden geçirilmiş tutun.
Concern trait’leriMetin, formlar, görseller veya güvenlik gibi yöntem ailelerini gruplar.Yöntemleri bağdaştırıcı kabuğuna değil, uygun concern’e ekleyin.
Köprü (bridge) sınıflarıEski bağımsız değişken biçimlerini çekirdek değerlere dönüştürür.Köprü davranışını geçiş testleriyle kapsayın.
CompatAdapterInterfaceAraçlar için bağdaştırıcı düzeyinde soyutlama.Yeni kodda yerel çekirdek sözleşmelerinin yerine kullanmayın.
Yöntem kapsamı tablosuGeliştiriciye yönelik destek kaydı.Destek durumu değiştiğinde tabloyu güncelleyin.
  1. Bağdaştırıcıyı kurun ve eski test paketini değiştirmeden çalıştırın.
  2. Ardından Yöntem kapsamı sayfasını açın ve çağrılan her yöntemi sınıflandırın.
  3. Önce desteklenmeyen yöntemleri değiştirin.
  4. Yüksek hacimli veya uyumluluğa duyarlı yolları yerel çekirdek API’lerine taşıyın.
  5. Geçiş yapılan her yöntem ailesi için fixture kapsamı ekleyin.
  6. Artık hiçbir uygulama giriş noktası bunlara bağımlı olmadığında önyükleme takma adlarını kaldırın.
HataNerede işlenmeliÖnerilen yanıt
Desteklenmeyen yöntemBağdaştırıcı istisnası.Çağrıyı değiştirin veya bir uygulama bağdaştırıcısının arkasında yalıtın.
Kısmi yerleşim eşitliğiGeçiş testleri ve görsel inceleme.Yayına almadan önce kabul edilen farkı belgeleyin.
Güvensiz çıktı hedefiOutputBridge ve uygulama depolama ilkesi.Güvensiz yolları reddedin ve yerel çıktı API’lerini tercih edin.
Güvenlik özelliği uyuşmazlığıYerel geçiş planı.Düzenlemeye tabi çıktılar için yalnızca uyumluluğa dayalı davranışı yayına almayın.
Önyükleme takma adı çakışmasıUygulama önyüklemesi.Genel takma adları kaldırın veya bunları eski giriş noktalarıyla sınırlayın.
ConcernVarsayılanNe zaman geçersiz kılınmalı
Desteklenmeyen yöntemlerAçık istisna fırlatır.Bunu üretimde zayıflatmayın.
Eski varsayılanlarVarsayılanlar LegacyDefaults içinde merkezileştirilmiştir.Yalnızca bilinen geçiş davranışı için geçersiz kılın.
Çıktı eşlemesiÇıktı, OutputBridge üzerinden geçer.Geçişten sonra yerel çıktı API’lerini kullanın.
Kapsam kaynağıYöntem kapsamı sayfası ve testleri.Her bağdaştırıcı yükseltmesinden sonra kapsam denetimlerini yeniden çalıştırın.
Katı kipGeçiş denetimleri sırasında etkin tutun.Yalnızca belgelenmiş bir eski uyumluluk penceresi için devre dışı bırakın.
  • Geçiş yapılan her yöntem ailesi için eski bir fixture’ı koruyun.
  • Eski bir yöntemi değiştirmeden önce yerel bir NextPDF testi ekleyin.
  • Desteklenmeyen yöntemlerin belgelenmiş istisnayı fırlattığını doğrulayın.
  • Tam bayt eşitliği gerçekçi bir geçiş hedefi olmadığında çıktı yapısını karşılaştırın.
  • Bağdaştırıcı yöntemleri ekledikten veya değiştirdikten sonra yöntem kapsamı denetimlerini çalıştırın.
  • Eski kodun kullandığı her çıktı hedefi için depolama yolu testleri ekleyin.