Enterprise phiên bản
PHPStan
Tổng quan nhanh
Phần tiêu đề “Tổng quan nhanh”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ả dụng và cấp phép
Phần tiêu đề “Khả dụng và cấp phép”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.
Cài đặt
Phần tiêu đề “Cài đặt”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\EditionBoundaryRuleTổng quan khái niệm
Phần tiêu đề “Tổng quan khái niệm”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:
- Mã Core (
NextPDF\, loại trừ các sub-namespace Pro và Enterprise) không được import từNextPDF\Pro\*hoặcNextPDF\Enterprise\*. - Mã Pro (
NextPDF\Pro\*) không được import từNextPDF\Enterprise\*. - Mã 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.
Vì sao nó hoạt động theo cách này
Phần tiêu đề “Vì sao nó hoạt động theo cách này”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.
Bề mặt API
Phần tiêu đề “Bề mặt API”| Class | Trách nhiệm |
|---|---|
EditionBoundaryRule | Quy 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.
Mẫu mã — Bắt đầu nhanh
Phần tiêu đề “Mẫu mã — Bắt đầu nhanh”# phpstan.neonincludes: - vendor/nextpdf/enterprise/phpstan.neon.distMẫu mã — Production
Phần tiêu đề “Mẫu mã — Production”# phpstan.neonrules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule
parameters: level: 9 paths: - srcMộ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.
Trường hợp biên và lưu ý
Phần tiêu đề “Trường hợp biên và lưu ý”- 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óusenằ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.
Hiệu năng
Phần tiêu đề “Hiệu năng”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.
Ghi chú bảo mật
Phần tiêu đề “Ghi chú bảo mật”Đâ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.
Telemetry an toàn và làm sạch nhật ký
Phần tiêu đề “Telemetry an toàn và làm sạch nhật ký”Đầ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.
Phù hợp tiêu chuẩn
Phần tiêu đề “Phù hợp tiêu chuẩ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.
Hành vi ở FIPS-mode
Phần tiêu đề “Hành vi ở FIPS-mode”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.
Mô hình mối đe dọa
Phần tiêu đề “Mô hình mối đe dọa”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.
Hợp đồng hành vi
Phần tiêu đề “Hợp đồng hành vi”- Quy tắc kiểm tra từng câu lệnh
usevà á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.editionBoundaryViolationcù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ó
usenằ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.
Ranh giới công bố
Phần tiêu đề “Ranh giới công bố”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.
Phương án dự phòng Core
Phần tiêu đề “Phương án dự phòng Core”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.
Phương án dự phòng Pro
Phần tiêu đề “Phương án dự phòng Pro”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.
Ghi chú ranh giới Enterprise
Phần tiêu đề “Ghi chú ranh giới 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.
Ranh giới triển khai
Phần tiêu đề “Ranh giới triển khai”Đâ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.
Ranh giới tuân thủ pháp lý
Phần tiêu đề “Ranh giới tuân thủ pháp lý”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.