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

Enterprise phiên bản

PHPStan — Tài liệu tham chiếu chuyên sâu

  • Một lớp public duy nhất: EditionBoundaryRule, một quy tắc PHPStan tùy chỉnh trên các câu lệnh use.
  • Thực thi thứ tự phụ thuộc phiên bản một chiều. Core không bao giờ import Pro hoặc Enterprise. Pro không bao giờ import Enterprise.
  • Vi phạm báo cáo định danh nextpdf.editionBoundaryViolation trên dòng use vi phạm.
  • Chỉ tại thời điểm build. Quy tắc không có đường runtime và không ảnh hưởng đến các PDF được tạo ra.
  • Đi kèm trong nextpdf/enterprise. Việc đăng ký sử dụng cấu hình PHPStan tiêu chuẩn.

Khả năng này đi kèm trong NextPDF Enterprise (nextpdf/enterprise) và kích hoạt cùng với một license envelope bậc Enterprise. Đây là một quy tắc phân tích tĩnh tại thời điểm build không có đường runtime: ranh giới gói nextpdf/enterprise kiểm soát nó, và nó không mang mã capability riêng theo từng tính năng. Core và Pro không đi kèm một thành phần tương đương. So sánh các phiên bản và lấy giấy phép.

Cài đặt gói, sau đó đăng ký quy tắc trong cấu hình PHPStan.

Terminal window
composer require nextpdf/enterprise:^3
rules:
- NextPDF\Enterprise\PHPStan\EditionBoundaryRule
SymbolTham sốHành vi mặc địnhTrả vềNém hoặc thất bại vớiGhi chú
EditionBoundaryRuleKhông (không có đối số constructor)Quy tắc PHPStan không trạng thái đăng ký cho các câu lệnh useKhông bao giờ némfinal; hiện thực PHPStan\Rules\Rule trên Use_
EditionBoundaryRule::getNodeType()KhôngKhai báo loại node AST mà quy tắc đăng kýstring (Use_::class)Không bao giờ némPhương thức hợp đồng Rule PHPStan tiêu chuẩn
EditionBoundaryRule::processNode()Node $node, Scope $scopeKiểm tra từng symbol được import so với các tiền tố bị cấm đối với namespace được phân tíchlist<IdentifierRuleError> (rỗng khi tuân thủ)Không bao giờ ném; vi phạm hiện ra dưới dạng lỗi quy tắcĐịnh danh lỗi nextpdf.editionBoundaryViolation
final class EditionBoundaryRule implements Rule
{
public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;
}

EditionBoundaryRule hiện thực hợp đồng PHPStan Rule tiêu chuẩn trên loại node Use_. Với mỗi câu lệnh use, nó so sánh namespace của tệp được phân tích với tiền tố namespace của mọi symbol được import và thực thi một thứ tự phụ thuộc một chiều.

Namespace được phân tíchNhãn phiên bảnTiền tố import bị cấm
Các sub-namespace NextPDF\*, loại trừ Pro và EnterpriseCoreNextPDF\Pro\, NextPDF\Enterprise\
NextPDF\ProNextPDF\Pro\*ProNextPDF\Enterprise\
NextPDF\EnterpriseNextPDF\Enterprise\*EnterpriseKhông có (bậc cao nhất)
Bất kỳ namespace nào ngoài NextPDF\Không có (không bị ràng buộc)

Khi một import vượt qua ranh giới, quy tắc báo cáo một lỗi dưới định danh nextpdf.editionBoundaryViolation, neo vào dòng câu lệnh use vi phạm. Thông điệp nêu tên symbol được import, namespace import, tiền tố bị cấm, và các nhãn phiên bản dễ đọc. Mỗi symbol được import tạo ra nhiều nhất một lỗi: việc so khớp tiền tố dừng lại ở tiền tố bị cấm đầu tiên khớp.

Việc kiểm tra là tĩnh và mang tính tư vấn. Nó báo cáo các vi phạm ranh giới trên các câu lệnh import. Nó không chứng minh rằng chương trình được phân tích là đúng đắn ở các mặt khác.

Trường hợp biên và chế độ thất bại

Phần tiêu đề “Trường hợp biên và chế độ thất bại”
  • Các namespace ngoài NextPDF\ và các tệp không có namespace không tạo ra lỗi nào; quy tắc trả về một danh sách rỗng.
  • Mã khai báo trong đúng namespace gốc NextPDF (không có phân đoạn sub-namespace) không bị ràng buộc; việc phát hiện ranh giới khớp các sub-namespace NextPDF\.
  • Các tệp Enterprise không bao giờ bị gắn cờ vì import các symbol Pro hoặc Core (bậc cao nhất, theo thiết kế).
  • Việc so khớp tiền tố có nhận biết dấu phân tách. Một namespace như NextPDF\Professional phân loại thành Core, không phải Pro, và các import dưới nó không bao giờ dương tính giả với tiền tố NextPDF\Pro\.
  • Import các tên nguyên văn NextPDF\Pro hoặc NextPDF\Enterprise không có phân đoạn tiếp theo thì không bị gắn cờ; chỉ các symbol dưới các tiền tố đó mới khớp.
  • Quy tắc không lọc theo loại import: các import class, function, và const dưới một tiền tố bị cấm đều báo cáo.
  • Các tham chiếu đầy đủ định danh nội tuyến được viết không có câu lệnh use nằm ngoài phạm vi. Hãy ưu tiên các import để ranh giới được thực thi.
  • Các khai báo use theo nhóm được phân tích thành loại node GroupUse riêng biệt và nằm ngoài đăng ký Use_ của quy tắc; các import từng symbol thuần túy giữ cho ranh giới được kiểm tra.
  • processNode() không bao giờ ném; mọi kết quả hiện ra dưới dạng lỗi quy tắc PHPStan hoặc một kết quả rỗng.
  • Không phải một thành phần runtime. Nó không thực hiện thao tác mật mã nào, và chế độ FIPS không áp dụng.

Không có 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 thực thi 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 dựng phía sau. Nó hiện thực hợp đồng mở rộng quy tắc PHPStan, vốn là một API công cụ bên thứ ba, không phải một tiêu chuẩn chính thức. Quy tắc không đưa ra bảo đảm tuân thủ, chứng nhận, hay tính đúng đắn nào về mã được phân tích; 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.

  • Quy tắc thực thi bên trong PHPStan trong khi phân tích, chỉ đọc cấu trúc nguồn, và không có tác động nào lên các PDF được tạo ra hay bất kỳ dịch vụ đã triển khai nào.
  • Việc đăng ký quy tắc và chọn level PHPStan vẫn là trách nhiệm của người tích hợp.
  • Lớp này là final và không trạng thái, nên nó an toàn dưới các worker phân tích song song của PHPStan.
  • Đầu ra phân tích có tính tất định đối với một cây nguồn cho trước: cùng đầu vào cho ra cùng danh sách lỗi.
  • Có sẵn kể từ nextpdf/enterprise 2.1.0; hợp đồng ở trên phản ánh 3.1.0.

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