Enterprise phiên bản
PHPStan — Tài liệu tham chiếu chuyên sâu
Nhìn tổng quan
Phần tiêu đề “Nhìn tổng quan”- 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ệnhuse. - 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.editionBoundaryViolationtrên dòngusevi 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.
Tình trạng sẵn có và cấp phép
Phần tiêu đề “Tình trạng sẵn có và cấp phép”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.
Bề mặt Public API
Phần tiêu đề “Bề mặt Public API”Cài đặt gói, sau đó đăng ký quy tắc trong cấu hình PHPStan.
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| Symbol | Tham số | Hành vi mặc định | Trả về | Ném hoặc thất bại với | Ghi chú |
|---|---|---|---|---|---|
EditionBoundaryRule | Khô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 use | — | Không bao giờ ném | final; hiện thực PHPStan\Rules\Rule trên Use_ |
EditionBoundaryRule::getNodeType() | Không | Khai báo loại node AST mà quy tắc đăng ký | string (Use_::class) | Không bao giờ ném | Phương thức hợp đồng Rule PHPStan tiêu chuẩn |
EditionBoundaryRule::processNode() | Node $node, Scope $scope | Kiể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ích | list<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;}Hợp đồng hành vi
Phần tiêu đề “Hợp đồng hành vi”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ích | Nhãn phiên bản | Tiền tố import bị cấm |
|---|---|---|
Các sub-namespace NextPDF\*, loại trừ Pro và Enterprise | Core | NextPDF\Pro\, NextPDF\Enterprise\ |
NextPDF\Pro và NextPDF\Pro\* | Pro | NextPDF\Enterprise\ |
NextPDF\Enterprise và NextPDF\Enterprise\* | Enterprise | Khô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-namespaceNextPDF\. - 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\Professionalphâ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\ProhoặcNextPDF\Enterprisekhô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àconstdướ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
usenằ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
usetheo nhóm được phân tích thành loại nodeGroupUseriê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.
Phù hợp tiêu chuẩn
Phần tiêu đề “Phù hợp tiêu chuẩn”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.
Ghi chú phát triển
Phần tiêu đề “Ghi chú phát triể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à
finalvà 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/enterprise2.1.0; hợp đồng ở trên phản ánh 3.1.0.
Ranh giới công bố
Phần tiêu đề “Ranh giới công bố”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.