ข้ามไปยังเนื้อหา

คู่มือนักพัฒนาสำหรับความเข้ากันได้กับ TCPDF

อะแดปเตอร์ความเข้ากันได้เป็นเลเยอร์สำหรับการย้ายระบบ อะแดปเตอร์นี้ทำให้เห็นพฤติกรรมแบบเดิมอย่างชัดเจน แทนที่จะซ่อนไว้ ใช้อะแดปเตอร์นี้เพื่อให้แอปพลิเคชันของคุณทำงานต่อไปได้ระหว่างที่คุณย้ายเส้นทางการทำงานที่มีมูลค่าสูงไปยัง API ของ NextPDF แบบเนทีฟ

ใช้คู่มือนี้เมื่อคุณต้องดูแลโค้ดรูปแบบ TCPDF เดิม เพิ่มความครอบคลุมของอะแดปเตอร์ หรือวางแผนการย้ายระบบแบบเป็นขั้นตอนไปยัง API ของ NextPDF แบบเนทีฟ

เลเยอร์เป็นเจ้าของโดยความรับผิดชอบอย่าใส่ไว้ที่นี่
แอปพลิเคชันแบบเดิมแอปพลิเคชันทำให้การเรียกใช้รูปแบบ TCPDF ที่มีอยู่ยังทำงานได้ระหว่างการย้ายระบบฟีเจอร์ PDF ใหม่ที่ควรใช้ API ของ NextPDF แบบเนทีฟ
เชลล์ของอะแดปเตอร์nextpdf/compat-legacyเปิดเผยคลาสรูปแบบ TCPDF และสถานะความเข้ากันได้ที่ใช้ร่วมกันกลุ่มเมธอดขนาดใหญ่หรือตรรกะการแปลงค่า
เทรต Concernnextpdf/compat-legacyจัดกลุ่มตระกูลเมธอดแบบเดิม: ข้อความ ฟอนต์ รูปภาพ ความปลอดภัย ฟอร์ม และเพจนโยบายเอาต์พุตข้ามตระกูล
คลาส Bridgenextpdf/compat-legacyแปลงอาร์กิวเมนต์ ปลายทาง สี หน่วย และรูปแบบเดิมพฤติกรรมเฉพาะทางธุรกิจ
เอนจินหลักnextpdf/nextpdfสร้างเอกสารแบบเนทีฟข้อรับประกันความเข้ากันได้แบบเดิม
ขั้นตอนพฤติกรรมการดำเนินการของนักพัฒนา
BootstrapBootstrap แบบเดิมที่เลือกใช้ได้จะเปิดเผยชื่อเพื่อความเข้ากันได้ใช้เฉพาะในตำแหน่งที่โค้ดแบบเดิมคาดหวังสัญลักษณ์ของ TCPDF
การสร้างอ็อบเจกต์อะแดปเตอร์จะแมปอาร์กิวเมนต์คอนสตรักเตอร์แบบเดิมไปยังค่ากำหนดของเอกสารหลักรักษาอินพุตของคอนสตรักเตอร์ให้เสถียรระหว่างการย้ายระบบ
การเรียกเมธอดเมธอดที่รองรับจะแมปไปยังพฤติกรรมของ NextPDF ผ่าน Concern และ Bridgeตรวจสอบความครอบคลุมของเมธอดก่อนสรุปว่าพฤติกรรมเทียบเท่ากัน
ฟีเจอร์ที่ไม่รองรับอะแดปเตอร์จะโยน Exception ด้านความเข้ากันได้อย่างชัดเจนสำหรับพฤติกรรมที่ไม่รองรับแทนที่การเรียกใช้หรือแยกไว้หลังโค้ดของแอปพลิเคชัน
เอาต์พุตBridge ของเอาต์พุตจะแมปพฤติกรรมปลายทางแบบเดิมไปยังเอาต์พุตของ NextPDFตรวจสอบความถูกต้องของชื่อไฟล์และรากพื้นที่จัดเก็บ

เริ่มจากรวบรวมการเรียกเมธอดของ TCPDF ทุกครั้งในแอปพลิเคชันของคุณ จำแนกประเภทของการเรียกใช้แต่ละครั้งก่อนเปลี่ยนพฤติกรรมใด ๆ

การจำแนกประเภทความหมายการดำเนินการ
เมธอดของอะแดปเตอร์ที่รองรับเมธอดนี้มีบันทึกว่ารองรับและมีการทดสอบแล้วเก็บไว้ชั่วคราว แล้วจึงย้ายระบบเมื่อคุณแก้ไขส่วนนั้น
เมธอดของอะแดปเตอร์ที่รองรับบางส่วนเมธอดนี้มีอยู่ แต่พฤติกรรมไม่ตรงกับ TCPDF แบบเดิมโดยสมบูรณ์เพิ่มการทดสอบด้วยฟิกซ์เจอร์และตรวจสอบความถูกต้องของเอาต์พุตด้วยตนเอง
เมธอดที่ไม่รองรับอย่างชัดเจนอะแดปเตอร์จะโยน Exception สำหรับความเข้ากันได้แทนที่ด้วย NextPDF แบบเนทีฟหรือนำฟีเจอร์ออก
แรปเปอร์เฉพาะทางธุรกิจแอปพลิเคชันห่อหุ้มการเรียกใช้ TCPDF ไว้แล้วย้ายระบบส่วนภายในของแรปเปอร์ก่อน
การเรียกใช้ที่เกี่ยวข้องกับการปฏิบัติตามข้อกำหนดลายเซ็น การเข้ารหัสลับ การทำแท็ก PDF/A การเข้าถึง หรือโฟลว์ใบแจ้งหนี้ย้ายระบบไปยัง API ของ NextPDF แบบเนทีฟพร้อมการตรวจสอบเฉพาะทาง

เพิ่มการรองรับความเข้ากันได้ในตระกูลเมธอดที่เล็กที่สุดซึ่งเป็นเจ้าของพฤติกรรมนั้น

ประเภทของการเปลี่ยนแปลงตำแหน่งที่จะนำไปใช้งานการทดสอบที่จำเป็น
เมธอดเอาต์พุตข้อความConcerns\AdaptsTextOutput หรือ Concern ของฟอนต์ฟิกซ์เจอร์แบบเดิมพร้อมการยืนยันเอาต์พุตแบบเนทีฟ
เมธอดเพจหรือระยะขอบConcern ของเพจ การกำหนดตำแหน่ง หรือระยะขอบการทดสอบการแปลงพิกัดและสถานะของเพจ
เมธอดรูปภาพหรือการวาดConcern ของรูปภาพ การวาด สี หรือเกรเดียนต์การทดสอบการตรวจสอบความถูกต้องของอินพุตและเอาต์พุตแบบ visual/structural
ปลายทางของเอาต์พุตOutputBridgeการทดสอบการแมปปลายทางและเส้นทางที่ไม่ปลอดภัย
ฟีเจอร์ที่ไม่รองรับException factory หรือตารางความครอบคลุมของเมธอดการทดสอบประเภทของ Exception และข้อความ

อย่าเพิ่มเมธอดขนาดใหญ่ลงในเชลล์ของอะแดปเตอร์โดยตรงเมื่อเทรต Concern เป็นเจ้าของตระกูลนั้น

ใช้อะแดปเตอร์เพื่อทำให้โค้ดแบบเดิมเสถียร แล้วจึงย้ายเวิร์กโฟลว์ที่เสถียรไปยัง 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ควบคุมพฤติกรรมของอะแดปเตอร์ระหว่างการย้ายระบบคงค่าเริ่มต้นให้ชัดเจนและผ่านการตรวจทาน
เทรต Concernจัดกลุ่มตระกูลเมธอด เช่น ข้อความ ฟอร์ม รูปภาพ หรือความปลอดภัยเพิ่มเมธอดไปยัง Concern ที่เหมาะสม ไม่ใช่เชลล์ของอะแดปเตอร์
คลาส Bridgeแปลงรูปแบบอาร์กิวเมนต์แบบเดิมให้เป็นค่าของเอนจินหลักครอบคลุมพฤติกรรมของ Bridge ด้วยการทดสอบการย้ายระบบ
CompatAdapterInterfaceชั้นนามธรรมระดับอะแดปเตอร์สำหรับเครื่องมืออย่าใช้แทนสัญญาของเอนจินหลักแบบเนทีฟในโค้ดใหม่
ตารางความครอบคลุมของเมธอดบันทึกสถานะการรองรับสำหรับผู้พัฒนาอัปเดตเมื่อสถานะการรองรับเปลี่ยนแปลง
  1. ติดตั้งอะแดปเตอร์และรันชุดทดสอบแบบเดิมโดยไม่เปลี่ยนแปลง
  2. เปิด ความครอบคลุมของเมธอด และจำแนกประเภทของทุกเมธอดที่ถูกเรียกใช้
  3. แทนที่เมธอดที่ไม่รองรับก่อน
  4. ย้ายเส้นทางที่มีปริมาณสูงหรือเกี่ยวข้องกับการปฏิบัติตามข้อกำหนดไปยัง API ของเอนจินหลักแบบเนทีฟ
  5. เพิ่มความครอบคลุมด้วยฟิกซ์เจอร์สำหรับทุกตระกูลเมธอดที่ย้ายระบบแล้ว
  6. นำชื่อแฝงของ Bootstrap ออกเมื่อไม่มีเอนทรีพอยต์ของแอปพลิเคชันใดต้องพึ่งพา
ความล้มเหลวตำแหน่งที่ควรจัดการการตอบสนองที่แนะนำ
เมธอดที่ไม่รองรับException ของอะแดปเตอร์แทนที่การเรียกใช้หรือแยกออกไปไว้หลังอะแดปเตอร์ของแอปพลิเคชัน
เค้าโครงที่เทียบเท่ากันเพียงบางส่วนการทดสอบการย้ายระบบและการตรวจทานด้วยสายตาบันทึกความแตกต่างที่ยอมรับได้ก่อนการเปิดตัว
ปลายทางของเอาต์พุตที่ไม่ปลอดภัยOutputBridge และนโยบายพื้นที่จัดเก็บของแอปพลิเคชันปฏิเสธเส้นทางที่ไม่ปลอดภัยและเลือกใช้ API เอาต์พุตแบบเนทีฟ
ความไม่ตรงกันของฟีเจอร์ด้านความปลอดภัยแผนการย้ายระบบแบบเนทีฟอย่าส่งมอบเอาต์พุตที่อยู่ภายใต้การกำกับดูแลด้วยพฤติกรรมที่มีไว้เพื่อความเข้ากันได้เท่านั้น
การชนกันของชื่อแฝงของ BootstrapBootstrap ของแอปพลิเคชันนำชื่อแฝงระดับโกลบอลออกหรือจำกัดขอบเขตไว้ที่เอนทรีพอยต์แบบเดิม
ส่วนงาน (Concern)ค่าเริ่มต้นเมื่อใดควรแทนที่
เมธอดที่ไม่รองรับโยน Exception อย่างชัดเจนอย่าลดทอนค่านี้ในการใช้งานจริง
ค่าเริ่มต้นแบบเดิมรวมศูนย์ไว้ใน LegacyDefaultsแทนที่เฉพาะสำหรับพฤติกรรมการย้ายระบบที่ทราบแล้วเท่านั้น
การแมปเอาต์พุตดำเนินการผ่าน OutputBridgeใช้ API เอาต์พุตแบบเนทีฟหลังการย้ายระบบ
แหล่งความครอบคลุมเพจความครอบคลุมของเมธอดและการทดสอบรันการตรวจสอบความครอบคลุมอีกครั้งหลังการอัปเกรดอะแดปเตอร์แต่ละครั้ง
โหมดเข้มงวดเปิดใช้งานไว้ระหว่างการตรวจสอบการย้ายระบบปิดใช้งานเฉพาะสำหรับช่วงความเข้ากันได้แบบเดิมที่มีการบันทึกไว้เท่านั้น
  • เก็บฟิกซ์เจอร์แบบเดิมไว้สำหรับทุกตระกูลเมธอดที่ย้ายระบบแล้ว
  • เพิ่มการทดสอบ NextPDF แบบเนทีฟหนึ่งรายการก่อนแทนที่เมธอดแบบเดิม
  • ยืนยันว่าเมธอดที่ไม่รองรับโยน Exception ที่มีการบันทึกไว้
  • เปรียบเทียบโครงสร้างของเอาต์พุตเมื่อความเท่ากันระดับไบต์แบบแม่นยำไม่ใช่เป้าหมายที่สมจริงของการย้ายระบบ
  • รันการตรวจสอบความครอบคลุมของเมธอดหลังจากเพิ่มหรือเปลี่ยนเมธอดของอะแดปเตอร์
  • เพิ่มการทดสอบเส้นทางพื้นที่จัดเก็บสำหรับทุกปลายทางของเอาต์พุตที่โค้ดแบบเดิมใช้