Enterprise edycja
PHPStan — szczegółowa referencja
W skrócie
Dział zatytułowany „W skrócie”- Jedna klasa publiczna:
EditionBoundaryRule, niestandardowa reguła PHPStan działająca na instrukcjachuse. - Egzekwuje jednokierunkową kolejność zależności edycji. Core nigdy nie importuje Pro ani Enterprise. Pro nigdy nie importuje Enterprise.
- Naruszenia zgłaszają identyfikator
nextpdf.editionBoundaryViolationw wierszu naruszającej instrukcjiuse. - Wyłącznie w czasie kompilacji. Reguła nie ma ścieżki wykonawczej ani wpływu na generowane pliki PDF.
- Dostarczana w
nextpdf/enterprise. Rejestracja korzysta ze standardowej konfiguracji PHPStan.
Dostępność i licencjonowanie
Dział zatytułowany „Dostępność i licencjonowanie”Ta funkcja jest dostarczana w NextPDF Enterprise (nextpdf/enterprise) i aktywuje się wraz z kopertą licencyjną w warstwie Enterprise. To reguła statycznej analizy działająca w czasie kompilacji, bez ścieżki wykonawczej: bramkuje ją granica pakietu nextpdf/enterprise i nie niesie ona osobnego kodu możliwości dla poszczególnych funkcji. Core ani Pro nie dostarczają odpowiednika. Porównaj edycje i uzyskaj licencję.
Powierzchnia publicznego API
Dział zatytułowany „Powierzchnia publicznego API”Zainstaluj pakiet, a następnie zarejestruj regułę w konfiguracji PHPStan.
composer require nextpdf/enterprise:^3rules: - NextPDF\Enterprise\PHPStan\EditionBoundaryRule| Symbol | Parametry | Zachowanie domyślne | Zwraca | Zgłasza lub kończy się błędem | Uwagi |
|---|---|---|---|---|---|
EditionBoundaryRule | Brak (bez argumentów konstruktora) | Bezstanowa reguła PHPStan subskrybująca instrukcje use | — | Nigdy nie zgłasza wyjątku | final; implementuje PHPStan\Rules\Rule na Use_ |
EditionBoundaryRule::getNodeType() | Brak | Deklaruje typ węzła AST, który reguła subskrybuje | string (Use_::class) | Nigdy nie zgłasza wyjątku | Standardowa metoda kontraktu PHPStan Rule |
EditionBoundaryRule::processNode() | Node $node, Scope $scope | Sprawdza każdy importowany symbol względem prefiksów zabronionych dla analizowanej przestrzeni nazw | list<IdentifierRuleError> (pusta, gdy zgodne) | Nigdy nie zgłasza wyjątku; naruszenia pojawiają się jako błędy reguły | Identyfikator błędu nextpdf.editionBoundaryViolation |
final class EditionBoundaryRule implements Rule{ public function getNodeType(): string;
public function processNode(Node $node, Scope $scope): array;}Kontrakt zachowania
Dział zatytułowany „Kontrakt zachowania”EditionBoundaryRule implementuje standardowy kontrakt PHPStan Rule na typie węzła Use_. Dla każdej instrukcji use porównuje przestrzeń nazw analizowanego pliku z prefiksem przestrzeni nazw każdego importowanego symbolu i egzekwuje jednokierunkową kolejność zależności.
| Analizowana przestrzeń nazw | Etykieta edycji | Zabronione prefiksy importu |
|---|---|---|
Podprzestrzenie nazw NextPDF\*, z wyłączeniem Pro i Enterprise | Core | NextPDF\Pro\, NextPDF\Enterprise\ |
NextPDF\Pro i NextPDF\Pro\* | Pro | NextPDF\Enterprise\ |
NextPDF\Enterprise i NextPDF\Enterprise\* | Enterprise | Brak (najwyższa warstwa) |
Dowolna przestrzeń nazw spoza NextPDF\ | — | Brak (bez ograniczeń) |
Gdy import przekracza granicę, reguła zgłasza błąd pod identyfikatorem nextpdf.editionBoundaryViolation, zakotwiczony w wierszu naruszającej instrukcji use. Komunikat nazywa importowany symbol, importującą przestrzeń nazw, zabroniony prefiks oraz czytelne dla człowieka etykiety edycji. Każdy importowany symbol generuje najwyżej jeden błąd: dopasowywanie prefiksów zatrzymuje się na pierwszym pasującym zabronionym prefiksie.
Kontrola jest statyczna i ma charakter doradczy. Zgłasza naruszenia granicy na instrukcjach importu. Nie dowodzi, że analizowany program jest poza tym poprawny.
Przypadki brzegowe i tryby awarii
Dział zatytułowany „Przypadki brzegowe i tryby awarii”- Przestrzenie nazw spoza
NextPDF\oraz pliki bez przestrzeni nazw nie generują błędów; reguła zwraca pustą listę. - Kod zadeklarowany w dokładnie głównej przestrzeni nazw
NextPDF(bez segmentu podprzestrzeni nazw) nie jest ograniczony; wykrywanie granic dopasowuje podprzestrzenie nazwNextPDF\. - Pliki Enterprise nigdy nie są oznaczane za importowanie symboli Pro lub Core (najwyższa warstwa, z założenia).
- Dopasowywanie prefiksów uwzględnia separator. Przestrzeń nazw taka jak
NextPDF\Professionalklasyfikuje się jako Core, nie Pro, a importy pod nią nigdy nie dają fałszywego trafienia względem prefiksuNextPDF\Pro\. - Import dosłownych nazw
NextPDF\ProlubNextPDF\Enterprisebez dalszego segmentu nie jest oznaczany; dopasowują się wyłącznie symbole pod tymi prefiksami. - Reguła nie filtruje według rodzaju importu: importy klas,
functionorazconstpod zabronionym prefiksem wszystkie są zgłaszane. - W pełni kwalifikowane odniesienia zapisane w treści bez instrukcji
usesą poza zakresem. Preferuj importy, aby granica była egzekwowana. - Grupowe deklaracje
usesą parsowane jako odrębny typ węzłaGroupUsei wypadają poza subskrypcjęUse_reguły; zwykłe importy pojedynczych symboli utrzymują kontrolę granicy. processNode()nigdy nie zgłasza wyjątku; wszystkie wyniki pojawiają się jako błędy reguły PHPStan lub pusty wynik.- Nie jest komponentem wykonawczym. Nie wykonuje operacji kryptograficznych, a tryb FIPS nie ma zastosowania.
Zgodność
Dział zatytułowany „Zgodność”Nie deklaruje się żadnej zgodności ze standardami. To reguła narzędzi deweloperskich egzekwująca wewnętrzne ograniczenie architektoniczne (warstwowanie edycji) w kompilacjach pochodnych. Implementuje kontrakt rozszerzenia reguł PHPStan, który jest API narzędzia zewnętrznego, a nie formalnym standardem. Reguła nie daje żadnej gwarancji zgodności, certyfikacji ani poprawności analizowanego kodu; zgłasza wyłącznie naruszenia importu na granicach edycji i ma charakter doradczy.
Uwagi deweloperskie
Dział zatytułowany „Uwagi deweloperskie”- Reguła wykonuje się wewnątrz PHPStan podczas analizy, odczytuje wyłącznie strukturę źródła i nie ma wpływu na generowane pliki PDF ani na żadną wdrożoną usługę.
- Zarejestrowanie reguły oraz wybór poziomu PHPStan pozostają w gestii integratora.
- Klasa jest
finali bezstanowa, więc jest bezpieczna w równoległych procesach analizy PHPStan. - Wynik analizy jest deterministyczny dla danego drzewa źródeł: te same dane wejściowe dają tę samą listę błędów.
- Dostępna od
nextpdf/enterprise2.1.0; powyższy kontrakt odzwierciedla 3.1.0.
Granica publikacji
Dział zatytułowany „Granica publikacji”Ta strona dokumentuje wyłącznie zewnętrznie obserwowalne zachowanie oraz obsługiwaną powierzchnię publicznego API. Wewnętrzne ścieżki przestrzeni nazw, klasy pomocnicze, tabele mechanizmów, nazwy plików runbooków oraz prefiksy zgłoszeń są poza zakresem.