Enterprise รุ่น
PHPStan
ภาพรวมโดยสังเขป
หัวข้อที่มีชื่อว่า “ภาพรวมโดยสังเขป”NextPDF Enterprise จัดส่งกฎ PHPStan แบบกำหนดเอง EditionBoundaryRule ที่ตั้งค่าสถานะ use import ซึ่งข้ามขอบเขตของรุ่น Core → Pro → Enterprise มันเป็นการตรวจสอบแบบสแตติกที่หันเข้าหานักพัฒนาซึ่งรายงานการละเมิด มันวิเคราะห์คำสั่ง import และไม่ได้รับประกันความถูกต้องของโค้ดของคุณ
ความพร้อมใช้งานและการอนุญาต
หัวข้อที่มีชื่อว่า “ความพร้อมใช้งานและการอนุญาต”ความสามารถนี้จัดส่งใน NextPDF Enterprise (nextpdf/enterprise) และเปิดใช้งานด้วยซองใบอนุญาตระดับ Enterprise มันเป็นกฎ PHPStan ในเวลาบิลด์ที่ลงทะเบียนผ่านการกำหนดค่า PHPStan ของคุณ จึงทำงานระหว่างการวิเคราะห์แบบสแตติกและไม่มีเส้นทางรันไทม์ เกตใบอนุญาตคือขอบเขตของแพ็กเกจ nextpdf/enterprise โดยไม่มีโค้ดความสามารถต่อฟีเจอร์แยกต่างหาก เปรียบเทียบรุ่นและรับใบอนุญาต
การติดตั้ง
หัวข้อที่มีชื่อว่า “การติดตั้ง”composer require nextpdf/enterprise:^3ลงทะเบียนกฎในการกำหนดค่า PHPStan ของคุณ:
rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRuleภาพรวมเชิงแนวคิด
หัวข้อที่มีชื่อว่า “ภาพรวมเชิงแนวคิด”กฎตรวจสอบคำสั่ง use แต่ละคำสั่งและเปรียบเทียบ namespace ที่ทำการ import กับคำนำหน้า namespace ของสัญลักษณ์ที่ถูก import มันบังคับใช้ลำดับการพึ่งพาแบบทิศทางเดียว:
- โค้ด Core (
NextPDF\ยกเว้น sub-namespace ของ Pro และ Enterprise) ต้องไม่ import จากNextPDF\Pro\*หรือNextPDF\Enterprise\* - โค้ด Pro (
NextPDF\Pro\*) ต้องไม่ import จากNextPDF\Enterprise\* - โค้ด Enterprise (
NextPDF\Enterprise\*) เป็นระดับชั้นบนสุดและอาจ import จากระดับใดก็ได้
เมื่อ import ข้ามขอบเขต กฎจะรายงานข้อผิดพลาดด้วยตัวระบุ nextpdf.editionBoundaryViolation และข้อความที่ระบุชื่อ namespace ที่ทำการ import คำนำหน้าที่ต้องห้าม และป้ายชื่อรุ่นที่มนุษย์อ่านได้ การตรวจสอบเป็นแบบสแตติกล้วน ๆ คือ มันอ่าน import graph ในเวลาวิเคราะห์
เหตุใดจึงทำงานเช่นนี้
หัวข้อที่มีชื่อว่า “เหตุใดจึงทำงานเช่นนี้”กฎใช้เหตุผลเกี่ยวกับคำสั่ง use ในเวลาวิเคราะห์ ไม่ใช่ในขณะรันไทม์ เพราะขอบเขตของรุ่นเป็นค่าคงที่ทางสถาปัตยกรรมมากกว่าการตัดสินใจในขณะรันไทม์ Core, Pro และ Enterprise จัดส่งเป็นแพ็กเกจแยกกัน ดังนั้นระดับที่ต่ำกว่าต้องไม่พึ่งพาสัญลักษณ์ที่ไม่มีอยู่ในการติดตั้งที่เล็กกว่า การจับ import ที่ข้ามขอบเขตระหว่างการวิเคราะห์แบบสแตติกทำให้บิลด์ล้มเหลวก่อนที่ความผิดพลาดจะถูกจัดส่ง ทางเลือกอื่นแย่กว่า คือ import เดียวกันจะปรากฏขึ้นในภายหลังเป็นข้อผิดพลาด missing-class ที่ร้ายแรงในการปรับใช้แบบ Core เท่านั้น ลำดับถูกกำหนดให้เป็นทิศทางเดียวโดยเจตนา Core → Pro → Enterprise สะท้อนวิธีที่แพ็กเกจ open-core ซ้อนทับกัน Enterprise ยังคงไม่ถูกจำกัดเพราะเป็นระดับชั้นบนสุดและอาจอ้างอิงทุกรุ่นที่อยู่ด้านล่าง
เบื้องหลังการออกแบบ: Open core ไม่มีการล็อกอิน
พื้นผิว API
หัวข้อที่มีชื่อว่า “พื้นผิว API”| คลาส | ความรับผิดชอบ |
|---|---|
EditionBoundaryRule | กฎ PHPStan เหนือคำสั่ง use รายงานการละเมิดขอบเขตของรุ่น |
กฎนำสัญญา PHPStan Rule มาตรฐานไปใช้เหนือชนิดโหนด Use_ และส่งข้อผิดพลาดภายใต้ตัวระบุ nextpdf.editionBoundaryViolation
ตัวอย่างโค้ด — เริ่มต้นใช้งานอย่างรวดเร็ว
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — เริ่มต้นใช้งานอย่างรวดเร็ว”# phpstan.neonincludes: - vendor/nextpdf/enterprise/phpstan.neon.distตัวอย่างโค้ด — การใช้งานจริง
หัวข้อที่มีชื่อว่า “ตัวอย่างโค้ด — การใช้งานจริง”# phpstan.neonrules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters: level: 9 paths: - srcการละเมิดปรากฏในผลลัพธ์ของ PHPStan เช่น การ import Enterprise ภายในโค้ด Core จะถูกรายงานเป็นการละเมิดขอบเขตของรุ่นบนบรรทัด use ที่กระทำผิด ภายใต้ nextpdf.editionBoundaryViolation
กรณีขอบและข้อควรระวัง
หัวข้อที่มีชื่อว่า “กรณีขอบและข้อควรระวัง”- กฎใช้เหตุผลเกี่ยวกับ namespace ของไฟล์ที่วิเคราะห์และคำนำหน้าของสัญลักษณ์ที่ถูก import โค้ดใน namespace ที่ไม่ใช่
NextPDF\ไม่ถูกจำกัดโดยกฎนี้ - namespace ของ Enterprise ไม่ถูกจำกัดตามการออกแบบ กฎไม่เคยตั้งค่าสถานะไฟล์ Enterprise สำหรับการ import Pro หรือ Core
- กฎวิเคราะห์คำสั่ง
useการอ้างอิงคลาสแบบ fully-qualified ที่เขียนแบบ inline โดยไม่มีuseอยู่นอกขอบเขตของกฎนี้ ให้ใช้ import เพื่อให้ขอบเขตถูกบังคับใช้ - การตรวจสอบเป็นแบบสแตติกและให้คำแนะนำ คือ มันรายงานการละเมิดขอบเขต มันไม่ได้พิสูจน์ว่าโปรแกรมของคุณถูกต้องในด้านอื่น
ประสิทธิภาพ
หัวข้อที่มีชื่อว่า “ประสิทธิภาพ”กฎรันต่อคำสั่ง use ระหว่างการวิเคราะห์ PHPStan และทำการเปรียบเทียบคำนำหน้าสตริง ค่าใช้จ่ายของมันเป็นสัดส่วนกับจำนวนคำสั่ง import และเล็กน้อยมากเทียบกับเวลาวิเคราะห์โดยรวม
บันทึกด้านความปลอดภัย
หัวข้อที่มีชื่อว่า “บันทึกด้านความปลอดภัย”นี่เป็นกฎการวิเคราะห์แบบสแตติก มันทำงานในเวลาบิลด์ภายใน PHPStan อ่านเฉพาะโครงสร้างของซอร์สโค้ด และไม่มีผลในขณะรันไทม์ต่อ PDF ที่สร้างขึ้น
Data residency และการลดผลกระทบ PII
หัวข้อที่มีชื่อว่า “Data residency และการลดผลกระทบ PII”กฎประมวลผลซอร์สโค้ดในเวลาวิเคราะห์และไม่จัดการเอกสารหรือข้อมูลส่วนบุคคล
การวัดและส่งข้อมูลที่ปลอดภัยและการขัดล้างบันทึก
หัวข้อที่มีชื่อว่า “การวัดและส่งข้อมูลที่ปลอดภัยและการขัดล้างบันทึก”ผลลัพธ์ของกฎคือการวินิจฉัยของ PHPStan มันมี namespace และชื่อสัญลักษณ์จากโค้ดของคุณเอง ให้ปฏิบัติต่อบันทึกการวิเคราะห์ด้วยความระมัดระวังเช่นเดียวกับซอร์สโค้ดของคุณ
ความสอดคล้อง
หัวข้อที่มีชื่อว่า “ความสอดคล้อง”ไม่มีการอ้างความสอดคล้องกับมาตรฐาน นี่เป็นกฎเครื่องมือสำหรับนักพัฒนาที่บังคับใช้ข้อจำกัดทางสถาปัตยกรรมภายใน (การจัดชั้นของรุ่น) ในบิลด์ปลายน้ำ
พฤติกรรมในโหมด FIPS
หัวข้อที่มีชื่อว่า “พฤติกรรมในโหมด FIPS”ไม่เกี่ยวข้อง กฎไม่ได้ทำการดำเนินการทางการเข้ารหัสและไม่มีเส้นทางรันไทม์
แบบจำลองภัยคุกคาม
หัวข้อที่มีชื่อว่า “แบบจำลองภัยคุกคาม”ไม่ใช่ส่วนประกอบรันไทม์ จุดประสงค์ของกฎคือการจับความผิดพลาดทางสถาปัตยกรรม — การ import ข้ามขอบเขตของรุ่น — ก่อนที่มันจะถูกจัดส่ง โดยทำให้ขั้นตอนการวิเคราะห์แบบสแตติกล้มเหลว
สัญญาด้านพฤติกรรม
หัวข้อที่มีชื่อว่า “สัญญาด้านพฤติกรรม”- กฎตรวจสอบคำสั่ง
useแต่ละคำสั่งและบังคับใช้ลำดับการพึ่งพาแบบทิศทางเดียว คือ Core ต้องไม่ import Pro หรือ Enterprise Pro ต้องไม่ import Enterprise Enterprise อาจ import ระดับใดก็ได้ - import ที่ข้ามขอบเขตถูกรายงานภายใต้ตัวระบุ
nextpdf.editionBoundaryViolationพร้อม namespace ที่ทำการ import และคำนำหน้าที่ต้องห้าม - โค้ดใน namespace ที่ไม่ใช่
NextPDF\ไม่ถูกจำกัดโดยกฎนี้ - การอ้างอิงคลาสแบบ fully-qualified inline โดยไม่มี
useอยู่นอกขอบเขตของกฎนี้ ให้ใช้ import เพื่อให้ขอบเขตถูกบังคับใช้
ขอบเขตการเผยแพร่
หัวข้อที่มีชื่อว่า “ขอบเขตการเผยแพร่”หน้านี้บันทึกเฉพาะพฤติกรรมที่สังเกตได้จากภายนอกและพื้นผิว API สาธารณะที่รองรับเท่านั้น เส้นทาง namespace ภายใน คลาสตัวช่วย ตารางกลไก ชื่อไฟล์ runbook และคำนำหน้า ticket อยู่นอกขอบเขต
การถอยกลับไปใช้ Core
หัวข้อที่มีชื่อว่า “การถอยกลับไปใช้ Core”NextPDF Core ไม่ได้จัดส่งกฎ PHPStan ขอบเขตของรุ่น ผู้บริโภคแบบ Core เท่านั้นที่ต้องการให้การจัดชั้นของรุ่นถูกบังคับใช้ในบิลด์ของตนเองต้องเขียนหรือจัดหากฎที่เทียบเท่ามาเอง
การถอยกลับไปใช้ Pro
หัวข้อที่มีชื่อว่า “การถอยกลับไปใช้ Pro”NextPDF Pro ไม่ได้จัดส่งกฎ PHPStan ขอบเขตของรุ่น มันเป็นส่วนหนึ่งของแพ็กเกจ nextpdf/enterprise เท่านั้น การปรับใช้แบบ Pro เท่านั้นจะไม่มีส่วนประกอบ Enterprise ให้ลงทะเบียนกฎนี้จาก ดู ภาพรวม Enterprise สำหรับพื้นผิว Enterprise
บันทึกขอบเขตของ Enterprise
หัวข้อที่มีชื่อว่า “บันทึกขอบเขตของ Enterprise”รายละเอียดกลไกภายในยังคงอยู่ในเอกสารภายในของ source repository และอยู่นอกขอบเขตของคู่มือนี้
ขอบเขตการปรับใช้
หัวข้อที่มีชื่อว่า “ขอบเขตการปรับใช้”นี่เป็นกฎการวิเคราะห์แบบสแตติกในเวลาบิลด์ มันทำงานภายใน PHPStan ระหว่างการวิเคราะห์ อ่านเฉพาะโครงสร้างของซอร์สโค้ด และไม่มีผลในขณะรันไทม์ต่อ PDF ที่สร้างขึ้นหรือต่อบริการที่ปรับใช้ใด ๆ การลงทะเบียนมันและการเลือกระดับ PHPStan เป็นความรับผิดชอบของผู้ผสานการทำงาน
ขอบเขตการปฏิบัติตามกฎหมาย
หัวข้อที่มีชื่อว่า “ขอบเขตการปฏิบัติตามกฎหมาย”หน้านี้อธิบายกฎการวิเคราะห์แบบสแตติกที่เป็นเครื่องมือสำหรับนักพัฒนา มันไม่ได้รับประกันการปฏิบัติตามข้อกำหนด การรับรอง หรือความถูกต้องเกี่ยวกับโค้ดของคุณ มันรายงานเฉพาะการละเมิดการ import ข้ามขอบเขตของรุ่นและเป็นการให้คำแนะนำ มันไม่ใช่คำแนะนำทางกฎหมาย การตัดสินว่าบิลด์ของคุณเป็นไปตามภาระผูกพันทางสถาปัตยกรรมหรือตามสัญญาของคุณเองหรือไม่เป็นความรับผิดชอบของคุณ