Bỏ qua để đến nội dung
getnextpdf.com

Enterprise phiên bản

PHPStan

NextPDF Enterprise cung cấp một quy tắc PHPStan tùy chỉnh, EditionBoundaryRule, đánh dấu các import use vượt qua ranh giới phiên bản Core → Pro → Enterprise. Đây là một kiểm tra tĩnh hướng tới lập trình viên, báo cáo các vi phạm; nó phân tích các câu lệnh import và không bảo đảm tính đúng đắn của mã của bạn.

Khả năng này được cung cấp trong NextPDF Enterprise (nextpdf/enterprise) và kích hoạt cùng với gói giấy phép bậc Enterprise. Đây là một quy tắc PHPStan tại thời điểm build, được đăng ký thông qua cấu hình PHPStan của bạn, nên nó chạy trong quá trình phân tích tĩnh và không có đường chạy runtime; cổng cấp phép chính là ranh giới gói nextpdf/enterprise, không có mã năng lực riêng cho từng tính năng. So sánh các phiên bản và lấy giấy phép.

Terminal window
composer require nextpdf/enterprise:^3

Đăng ký quy tắc này trong cấu hình PHPStan của bạn:

rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule

Quy tắc kiểm tra từng câu lệnh use và so sánh namespace đang import với tiền tố namespace của ký hiệu được import. Nó áp đặt một thứ tự phụ thuộc một chiều:

  • Core (NextPDF\, loại trừ các sub-namespace Pro và Enterprise) không được import từ NextPDF\Pro\* hoặc NextPDF\Enterprise\*.
  • Pro (NextPDF\Pro\*) không được import từ NextPDF\Enterprise\*.
  • Enterprise (NextPDF\Enterprise\*) là bậc cao nhất và có thể import từ bất kỳ bậc nào trong số đó.

Khi một import vượt qua ranh giới, quy tắc báo cáo một lỗi với định danh nextpdf.editionBoundaryViolation và một thông điệp nêu tên namespace đang import, tiền tố bị cấm và các nhãn phiên bản dễ đọc. Kiểm tra này hoàn toàn tĩnh: nó đọc đồ thị import tại thời điểm phân tích.

Quy tắc lập luận về các câu lệnh use tại thời điểm phân tích, không phải tại runtime, bởi vì ranh giới phiên bản là một bất biến kiến trúc chứ không phải một quyết định tại runtime. Core, Pro và Enterprise được phát hành dưới dạng các gói riêng biệt, nên một bậc thấp hơn không bao giờ được phụ thuộc vào các ký hiệu vắng mặt trong một bản cài đặt nhỏ hơn. Việc bắt được một import vượt ranh giới trong quá trình phân tích tĩnh làm bản build thất bại trước khi sai lầm được phát hành. Phương án thay thế còn tệ hơn: chính import đó sẽ xuất hiện sau này dưới dạng một lỗi thiếu class nghiêm trọng trong một triển khai chỉ có Core. Thứ tự được cố ý đặt một chiều, Core → Pro → Enterprise, phản ánh cách các gói open-core xếp lớp lên nhau. Enterprise không bị ràng buộc vì nó là bậc cao nhất và có thể tham chiếu mọi phiên bản bên dưới nó.

Bối cảnh thiết kế: Open core, không khóa nhà cung cấp.

ClassTrách nhiệm
EditionBoundaryRuleQuy tắc PHPStan trên các câu lệnh use; báo cáo các vi phạm ranh giới phiên bản.

Quy tắc hiện thực contract Rule chuẩn của PHPStan trên kiểu node Use_ và phát ra lỗi dưới định danh nextpdf.editionBoundaryViolation.

# phpstan.neon
includes:
- vendor/nextpdf/enterprise/phpstan.neon.dist
# phpstan.neon
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters:
level: 9
paths:
- src

Một vi phạm xuất hiện trong đầu ra PHPStan, ví dụ: một import Enterprise bên trong mã Core được báo cáo là một vi phạm ranh giới phiên bản trên dòng use vi phạm, dưới nextpdf.editionBoundaryViolation.

  • Quy tắc lập luận về namespace của tệp được phân tích và tiền tố của ký hiệu được import. Mã trong một namespace không phải NextPDF\ không bị quy tắc này ràng buộc.
  • Các namespace Enterprise không bị hạn chế theo thiết kế; quy tắc không bao giờ đánh dấu một tệp Enterprise vì import Pro hoặc Core.
  • Quy tắc phân tích các câu lệnh use. Một tham chiếu class đủ điều kiện (fully-qualified) viết trực tiếp mà không có use nằm ngoài phạm vi của quy tắc này; hãy ưu tiên dùng import để ranh giới được áp đặt.
  • Kiểm tra này là tĩnh và mang tính tư vấn: nó báo cáo các vi phạm ranh giới. Nó không chứng minh rằng chương trình của bạn đúng đắn ở các khía cạnh khác.

Quy tắc chạy trên mỗi câu lệnh use trong quá trình phân tích PHPStan và thực hiện các phép so sánh tiền tố chuỗi. Chi phí của nó tỷ lệ với số lượng câu lệnh import và không đáng kể so với tổng thời gian phân tích.

Đây là một quy tắc phân tích tĩnh. Nó thực thi tại thời điểm build bên trong PHPStan, chỉ đọc cấu trúc mã nguồn, và không có tác động runtime nào lên các PDF được tạo ra.

Cư trú dữ liệu và biện pháp giảm thiểu PII

Phần tiêu đề “Cư trú dữ liệu và biện pháp giảm thiểu PII”

Quy tắc xử lý mã nguồn tại thời điểm phân tích và không xử lý dữ liệu tài liệu hay dữ liệu cá nhân nào.

Đầu ra của quy tắc là các chẩn đoán của PHPStan. Nó chứa các namespace và tên ký hiệu từ mã của chính bạn; hãy đối xử với nhật ký phân tích cẩn trọng như với mã nguồn của bạn.

Không tuyên bố phù hợp tiêu chuẩn nào. Đây là một quy tắc công cụ cho lập trình viên, áp đặt một ràng buộc kiến trúc nội bộ (phân lớp phiên bản) trong các bản build downstream.

Không áp dụng; quy tắc không thực hiện thao tác mật mã nào và không có đường chạy runtime.

Không phải là một thành phần runtime. Mục đích của quy tắc là phát hiện một sai lầm kiến trúc — một import vượt ranh giới phiên bản — trước khi nó được phát hành, bằng cách làm giai đoạn phân tích tĩnh thất bại.

  • Quy tắc kiểm tra từng câu lệnh use và áp đặt một thứ tự phụ thuộc một chiều: Core không được import Pro hoặc Enterprise; Pro không được import Enterprise; Enterprise có thể import bất kỳ bậc nào.
  • Một import vượt ranh giới được báo cáo dưới định danh nextpdf.editionBoundaryViolation cùng với namespace đang import và tiền tố bị cấm.
  • Mã trong một namespace không phải NextPDF\ không bị quy tắc này ràng buộc.
  • Một tham chiếu class đủ điều kiện viết trực tiếp mà không có use nằm ngoài phạm vi của quy tắc này; hãy ưu tiên dùng import để ranh giới được áp đặt.

Trang này chỉ ghi lại hành vi có thể quan sát được từ bên ngoài và bề mặt API công khai được hỗ trợ. Các đường dẫn namespace nội bộ, các class trợ giúp, các bảng cơ chế, tên tệp runbook và tiền tố ticket nằm ngoài phạm vi.

NextPDF Core không cung cấp một quy tắc PHPStan ranh giới phiên bản. Một người dùng chỉ có Core muốn áp đặt phân lớp phiên bản trong bản build của riêng mình phải tự viết hoặc tự lấy một quy tắc tương đương.

NextPDF Pro không cung cấp quy tắc PHPStan ranh giới phiên bản; nó chỉ là một phần của gói nextpdf/enterprise. Một triển khai chỉ có Pro không có thành phần Enterprise nào để đăng ký quy tắc này từ đó. Xem Tổng quan Enterprise để biết bề mặt Enterprise.

Chi tiết cơ chế nội bộ nằm trong tài liệu nội bộ của kho mã nguồn và nằm ngoài phạm vi của sổ tay này.

Đây là một quy tắc phân tích tĩnh tại thời điểm build. Nó thực thi bên trong PHPStan trong quá trình phân tích, chỉ đọc cấu trúc mã nguồn, và không có tác động runtime nào lên các PDF được tạo ra hay lên bất kỳ dịch vụ đã triển khai nào. Việc đăng ký nó và chọn mức PHPStan là trách nhiệm của người tích hợp.

Trang này mô tả một quy tắc phân tích tĩnh thuộc công cụ cho lập trình viên. Nó không đưa ra bảo đảm nào về tuân thủ, chứng nhận hay tính đúng đắn đối với mã của bạn; nó chỉ báo cáo các vi phạm import ranh giới phiên bản và mang tính tư vấn. Nó không cấu thành tư vấn pháp lý. Việc đánh giá xem bản build của bạn có đáp ứng các nghĩa vụ kiến trúc hay hợp đồng của riêng bạn hay không là trách nhiệm của bạn.